<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Serial presence detect</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Serial_presence_detect"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Serial_presence_detect rootpage-Serial_presence_detect skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Serial presence detect</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p>
In <a href="Computing" title="Computing">computing</a>, <b>serial presence detect</b> (<b>SPD</b>) is a standardized way to automatically access information about a <a href="Memory_module" title="Memory module">memory module</a>. Earlier 72-pin <a href="SIMM" title="SIMM">SIMMs</a> included five pins that provided five bits of <i>parallel presence detect</i> (PPD) data, but the 168-pin <a href="DIMM" title="DIMM">DIMM</a> standard changed to a serial presence detect to encode more information.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>When an ordinary modern computer is turned on, it starts by doing a <a href="Power-on_self-test" title="Power-on self-test">power-on self-test</a> (POST). Since about the mid-1990s, this process includes automatically configuring the hardware currently present. SPD is a memory hardware feature that makes it possible for the computer to know what memory is present, and what <a href="Memory_timings" title="Memory timings">memory timings</a> to use to access the memory.
</p><p>Some computers adapt to hardware changes completely automatically. In most cases, there is a special optional procedure for accessing <a href="BIOS" title="BIOS">BIOS</a> parameters, to view and potentially make changes in settings. It may be possible to control how the computer uses the memory SPD data—to choose settings, selectively modify memory timings, or possibly to completely override the SPD data (see <a href="Overclocking" title="Overclocking">overclocking</a>).
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Stored_information">Stored information</h2></div>
<p>For a memory module to support SPD, the <a href="JEDEC" title="JEDEC">JEDEC</a> standards require that certain parameters be in the lower 128 bytes of an <a href="EEPROM" title="EEPROM">EEPROM</a> located on the memory module. These bytes contain timing parameters, manufacturer, serial number and other useful information about the module. Devices utilizing the memory automatically determine key parameters of the module by reading this information. For example, the SPD data on an <a href="SDRAM" class="mw-redirect" title="SDRAM">SDRAM</a> module might provide information about the <a href="CAS_latency" title="CAS latency">CAS latency</a> so the system can set this correctly without user intervention.
</p><p>The SPD EEPROM firmware is accessed using <a href="SMBus" class="mw-redirect" title="SMBus">SMBus</a>, a variant of the <a href="I2C" class="mw-redirect" title="I2C">I<sup>2</sup>C</a> protocol. This reduces the number of communication pins on the module to just two: a clock signal and a data signal. The EEPROM shares ground pins with the RAM, has its own power pin, and has three additional pins (SA0–2) to identify the slot, which are used to assign the EEPROM a unique address in the range 0x50–0x57. Not only can the communication lines be shared among 8 memory modules, the same SMBus is commonly used on motherboards for system health monitoring tasks such as reading power supply voltages, <a href="Central_processing_unit" title="Central processing unit">CPU</a> temperatures, and fan speeds.
</p><p>SPD EEPROMs also respond to I<sup>2</sup>C addresses 0x30–0x37 if they have not been write protected, and an extension (TSE series) uses addresses 0x18–0x1F to access an optional on-chip temperature sensor. All those values are <a href="I2C" class="mw-redirect" title="I2C">seven-bit I<sup>2</sup>C addresses</a> formed by a Device Type Identifier Code prefix (DTIC) with SA0-2: to read (1100) from slot 3, one uses <code><b>110 0</b>011 = 0x33</code>. With a final R/W bit it forms the 8-bit Device Select Code.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Note that the semantics of slot-id is different for write-protection operations: for them they can be not passed by the SA pins at all.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>Before SPD, memory chips were spotted with parallel presence detect (PPD). PPD used a separate pin for each bit of information, which meant that only the speed and density of the memory module could be stored because of the limited space for pins.
</p>
<div class="mw-heading mw-heading3"><h3 id="SDR_SDRAM">SDR SDRAM</h3></div>
<p>The first SPD specification was issued by JEDEC and tightened up by Intel as part of its <a href="PC100" class="mw-redirect" title="PC100">PC100</a> memory specification introduced in 1998.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Most values specified are in <a href="Binary-coded_decimal" title="Binary-coded decimal">binary-coded decimal</a> form. The most significant <a href="Nibble" title="Nibble">nibble</a> can contain values from 10 to 15, and in some cases extends higher. In such cases, the encodings for 1, 2 and 3 are instead used to encode 16, 17 and 18. A most significant nibble of 0 is reserved to represent "undefined".
</p><p>The SPD ROM defines up to three DRAM timings, for three CAS latencies specified by set bits in byte 18. First comes the highest CAS latency (fastest clock), then two lower CAS latencies with progressively lower clock speeds.
</p>
<table class="wikitable">
<caption>SPD contents for SDR SDRAM<sup id="cite_ref-spd_pc100_7-0" class="reference"><a href="#cite_note-spd_pc100-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th colspan="2">Byte
</th>
<th colspan="8">Bit
</th>
<th rowspan="2">Notes
</th></tr>
<tr>
<th>(dec.)</th>
<th>(hex.)
</th>
<th>7</th>
<th>6</th>
<th>5</th>
<th>4</th>
<th>3</th>
<th>2</th>
<th>1</th>
<th>0
</th></tr>
<tr>
<td>0</td>
<td>0x00</td>
<td colspan="8">Number of bytes present</td>
<td>Typically 128
</td></tr>
<tr>
<td>1</td>
<td>0x01</td>
<td colspan="8">log<sub>2</sub>(size of SPD EEPROM)</td>
<td>Typically 8 (256 bytes)
</td></tr>
<tr>
<td>2</td>
<td>0x02</td>
<td colspan="8">Basic memory type (4: SPD SDRAM)</td>
<td>
</td></tr>
<tr>
<td>3</td>
<td>0x03</td>
<td colspan="4">Bank 2 row address bits (0–15)</td>
<td colspan="4">Bank 1 row address bits (1–15)</td>
<td>Bank 2 is 0 if same as bank 1
</td></tr>
<tr>
<td>4</td>
<td>0x04</td>
<td colspan="4">Bank 2 column address bits (0–15)</td>
<td colspan="4">Bank 1 column address bits (1–15)</td>
<td>Bank 2 is 0 if same as bank 1
</td></tr>
<tr>
<td>5</td>
<td>0x05</td>
<td colspan="8">Number of RAM banks on module (1–255)</td>
<td>Commonly 1 or 2
</td></tr>
<tr>
<td>6</td>
<td>0x06</td>
<td colspan="8">Module data width low byte</td>
<td>Commonly 64, or 72 for ECC DIMMs
</td></tr>
<tr>
<td>7</td>
<td>0x07</td>
<td colspan="8">Module data width high byte</td>
<td>0, unless width ≥ 256 bits
</td></tr>
<tr>
<td>8</td>
<td>0x08</td>
<td colspan="8">Interface voltage level of this assembly (not the same as V<sub>cc</sub> supply voltage) (0–4)</td>
<td>Decoded by table lookup
</td></tr>
<tr>
<td>9</td>
<td>0x09</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Clock cycle time at highest CAS latency
</td></tr>
<tr>
<td>10</td>
<td>0x0a</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>SDRAM access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>11</td>
<td>0x0b</td>
<td colspan="8">DIMM configuration type (0–2): non-ECC, parity, ECC</td>
<td>Table lookup
</td></tr>
<tr>
<td>12</td>
<td>0x0c</td>
<td>Self</td>
<td colspan="7">Refresh period (0–5): 64, 256, 128, 32, 16, 8 kHz</td>
<td>Refresh requirements
</td></tr>
<tr>
<td>13</td>
<td>0x0d</td>
<td>Bank 2 2×</td>
<td colspan="7">Bank 1 primary SDRAM width (1–127, usually 8)</td>
<td>Width of bank 1 data SDRAM devices. Bank 2 may be same width, or 2× width if bit 7 is set.
</td></tr>
<tr>
<td>14</td>
<td>0x0e</td>
<td>Bank 2 2×</td>
<td colspan="7">Bank 1 ECC SDRAM width (0–127)</td>
<td>Width of bank 1 ECC/parity SDRAM devices. Bank 2 may be same width, or 2× width if bit 7 is set.
</td></tr>
<tr>
<td>15</td>
<td>0x0f</td>
<td colspan="8">Clock delay for random column reads</td>
<td>Typically 1
</td></tr>
<tr>
<td>16</td>
<td>0x10</td>
<td>Page</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>8</td>
<td>4</td>
<td>2</td>
<td>1</td>
<td>Burst lengths supported (bitmap)
</td></tr>
<tr>
<td>17</td>
<td>0x11</td>
<td colspan="8">Banks per SDRAM device (1–255)</td>
<td>Typically 2 or 4
</td></tr>
<tr>
<td>18</td>
<td>0x12</td>
<td>—</td>
<td>7</td>
<td>6</td>
<td>5</td>
<td>4</td>
<td>3</td>
<td>2</td>
<td>1</td>
<td><span style="text-decoration:overline;">CAS</span> latencies supported (bitmap)
</td></tr>
<tr>
<td>19</td>
<td>0x13</td>
<td>—</td>
<td>6</td>
<td>5</td>
<td>4</td>
<td>3</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td><span style="text-decoration:overline;">CS</span> latencies supported (bitmap)
</td></tr>
<tr>
<td>20</td>
<td>0x14</td>
<td>—</td>
<td>6</td>
<td>5</td>
<td>4</td>
<td>3</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td><span style="text-decoration:overline;">WE</span> latencies supported (bitmap)
</td></tr>
<tr>
<td>21</td>
<td>0x15</td>
<td>—</td>
<td>Redundant</td>
<td>Diff. clock</td>
<td>Registered data</td>
<td>Buffered data</td>
<td>On-card PLL</td>
<td>Registered addr.</td>
<td>Buffered addr.</td>
<td>Memory module feature bitmap
</td></tr>
<tr>
<td>22</td>
<td>0x16</td>
<td>—</td>
<td>—</td>
<td>Upper V<sub>cc</sub> (supply voltage) tolerance</td>
<td>Lower V<sub>cc</sub> (supply voltage) tolerance</td>
<td>Write/1 read burst</td>
<td>Precharge all</td>
<td>Auto-precharge</td>
<td>Early <span style="text-decoration:overline;">RAS</span> precharge</td>
<td>Memory chip feature support bitmap
</td></tr>
<tr>
<td>23</td>
<td>0x17</td>
<td colspan="4">Nanoseconds (4–18)</td>
<td colspan="4">Tenths of nanoseconds (0–9: 0.0–0.9)</td>
<td>Clock cycle time at medium CAS latency
</td></tr>
<tr>
<td>24</td>
<td>0x18</td>
<td colspan="4">Nanoseconds (4–18)</td>
<td colspan="4">Tenths of nanoseconds (0–9: 0.0–0.9)</td>
<td>Data access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>25</td>
<td>0x19</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–3: 0.00–0.75)</td>
<td>Clock cycle time at short CAS latency.
</td></tr>
<tr>
<td>26</td>
<td>0x1a</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–3: 0.00–0.75)</td>
<td>Data access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>27</td>
<td>0x1b</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum row precharge time (t<sub>RP</sub>)
</td></tr>
<tr>
<td>28</td>
<td>0x1c</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum row active–row active delay (t<sub>RRD</sub>)
</td></tr>
<tr>
<td>29</td>
<td>0x1d</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum <span style="text-decoration:overline;">RAS</span> to <span style="text-decoration:overline;">CAS</span> delay (t<sub>RCD</sub>)
</td></tr>
<tr>
<td>30</td>
<td>0x1e</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum active to precharge time (t<sub>RAS</sub>)
</td></tr>
<tr>
<td>31</td>
<td>0x1f</td>
<td>512 MiB</td>
<td>256 MiB</td>
<td>128 MiB</td>
<td>64 MiB</td>
<td>32 MiB</td>
<td>16 MiB</td>
<td>8 MiB</td>
<td>4 MiB</td>
<td>Module bank density (bitmap). Two bits set if different size banks.
</td></tr>
<tr>
<td>32</td>
<td>0x20</td>
<td>Sign (1: −)</td>
<td colspan="3">Nanoseconds (0–7)</td>
<td colspan="4">Tenths of nanoseconds (0–9: 0.0–0.9)</td>
<td>Address/command setup time from clock
</td></tr>
<tr>
<td>33</td>
<td>0x21</td>
<td>Sign (1: −)</td>
<td colspan="3">Nanoseconds (0–7)</td>
<td colspan="4">Tenths of nanoseconds (0–9: 0.0–0.9)</td>
<td>Address/command hold time after clock
</td></tr>
<tr>
<td>34</td>
<td>0x22</td>
<td>Sign (1: −)</td>
<td colspan="3">Nanoseconds (0–7)</td>
<td colspan="4">Tenths of nanoseconds (0–9: 0.0–0.9)</td>
<td>Data input setup time from clock
</td></tr>
<tr>
<td>35</td>
<td>0x23</td>
<td>Sign (1: −)</td>
<td colspan="3">Nanoseconds (0–7)</td>
<td colspan="4">Tenths of nanoseconds (0–9: 0.0–0.9)</td>
<td>Data input hold time after clock
</td></tr>
<tr>
<td>36–61</td>
<td>0x24–0x3d
</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td>
<td>For future standardization
</td></tr>
<tr>
<td>62</td>
<td>0x3e</td>
<td colspan="4">Major revision (0–9)</td>
<td colspan="4">Minor revision (0–9)</td>
<td>SPD revision level; e.g., 1.2
</td></tr>
<tr>
<td>63</td>
<td>0x3f</td>
<td colspan="8">Checksum</td>
<td>Sum of bytes 0–62, <i>not then negated</i>
</td></tr>
<tr>
<td>64–71</td>
<td>0x40–47</td>
<td colspan="8">Manufacturer JEDEC id.</td>
<td>Stored little-endian, trailing zero-padded
</td></tr>
<tr>
<td>72</td>
<td>0x48</td>
<td colspan="8">Module manufacturing location</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>73–90</td>
<td>0x49–0x5a</td>
<td colspan="8">Module part number</td>
<td>ASCII, space-padded
</td></tr>
<tr>
<td>91–92</td>
<td>0x5b–0x5c</td>
<td colspan="8">Module revision code</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>93</td>
<td>0x5d</td>
<td colspan="4">Tens of years (0–9: 0–90)</td>
<td colspan="4">Years (0–9)</td>
<td rowspan="2">Manufacturing date (YYWW)
</td></tr>
<tr>
<td>94</td>
<td>0x5e</td>
<td colspan="4">Tens of weeks (0–5: 0–50)</td>
<td colspan="4">Weeks (0–9)
</td></tr>
<tr>
<td>95–98</td>
<td>0x5f–0x62</td>
<td colspan="8">Module serial number</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>99–125</td>
<td>0x63–0x7f</td>
<td colspan="8">Manufacturer-specific data</td>
<td>Could be enhanced performance profile
</td></tr>
<tr>
<td>126</td>
<td>0x7e</td>
<td colspan="8">0x66 [<i><a href="Sic" title="Sic">sic</a></i>] for 66 MHz, 0x64 for 100 MHz</td>
<td>Intel frequency support
</td></tr>
<tr>
<td>127</td>
<td>0x7f</td>
<td>CLK0</td>
<td>CLK1</td>
<td>CLK3</td>
<td>CLK3</td>
<td>90/100 °C</td>
<td>CL3</td>
<td>CL2</td>
<td>Concurrent AP</td>
<td>Intel feature bitmap
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="DDR_SDRAM">DDR SDRAM</h3></div>
<p>The DDR DIMM SPD format is an extension of the SDR SDRAM format. Mostly, parameter ranges are rescaled to accommodate higher speeds.
</p>
<table class="wikitable">
<caption>SPD contents for DDR SDRAM<sup id="cite_ref-spd_ddr_8-0" class="reference"><a href="#cite_note-spd_ddr-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th colspan="2">Byte
</th>
<th colspan="8">Bit
</th>
<th rowspan="2">Notes
</th></tr>
<tr>
<th>(dec.)</th>
<th>(hex.)
</th>
<th>7</th>
<th>6</th>
<th>5</th>
<th>4</th>
<th>3</th>
<th>2</th>
<th>1</th>
<th>0
</th></tr>
<tr>
<td>0</td>
<td>0x00</td>
<td colspan="8">Number of bytes written</td>
<td>Typically 128
</td></tr>
<tr>
<td>1</td>
<td>0x01</td>
<td colspan="8">log<sub>2</sub>(size of SPD EEPROM)</td>
<td>Typically 8 (256 bytes)
</td></tr>
<tr>
<td>2</td>
<td>0x02</td>
<td colspan="8">Basic memory type (7 = DDR SDRAM)</td>
<td>
</td></tr>
<tr>
<td>3</td>
<td>0x03</td>
<td colspan="4">Bank 2 row address bits (0–15)</td>
<td colspan="4">Bank 1 row address bits (1–15)</td>
<td>Bank 2 is 0 if same as bank 1.
</td></tr>
<tr>
<td>4</td>
<td>0x04</td>
<td colspan="4">Bank 2 column address bits (0–15)</td>
<td colspan="4">Bank 1 column address bits (1–15)</td>
<td>Bank 2 is 0 if same as bank 1.
</td></tr>
<tr>
<td>5</td>
<td>0x05</td>
<td colspan="8">Number of RAM banks on module (1–255)</td>
<td>Commonly 1 or 2
</td></tr>
<tr>
<td>6</td>
<td>0x06</td>
<td colspan="8">Module data width low byte</td>
<td>Commonly 64, or 72 for ECC DIMMs
</td></tr>
<tr>
<td>7</td>
<td>0x07</td>
<td colspan="8">Module data width high byte</td>
<td>0, unless width ≥ 256 bits
</td></tr>
<tr>
<td>8</td>
<td>0x08</td>
<td colspan="8">Interface voltage level of this assembly (not the same as V<sub>cc</sub> supply voltage) (0–5)</td>
<td>Decoded by table lookup
</td></tr>
<tr>
<td>9</td>
<td>0x09</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Clock cycle time at highest CAS latency.
</td></tr>
<tr>
<td>10</td>
<td>0x0a</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>SDRAM access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>11</td>
<td>0x0b</td>
<td colspan="8">DIMM configuration type (0–2): non-ECC, parity, ECC</td>
<td>Table lookup
</td></tr>
<tr>
<td>12</td>
<td>0x0c</td>
<td>Self</td>
<td colspan="7">Refresh period (0–5): 64, 256, 128, 32, 16, 8 kHz</td>
<td>Refresh requirements
</td></tr>
<tr>
<td>13</td>
<td>0x0d</td>
<td>Bank 2 2×</td>
<td colspan="7">Bank 1 primary SDRAM width (1–127)</td>
<td>Width of bank 1 data SDRAM devices. Bank 2 may be same width, or 2× width if bit 7 is set.
</td></tr>
<tr>
<td>14</td>
<td>0x0e</td>
<td>Bank 2 2×</td>
<td colspan="7">Bank 1 ECC SDRAM width (0–127)</td>
<td>Width of bank 1 ECC/parity SDRAM devices. Bank 2 may be same width, or 2× width if bit 7 is set.
</td></tr>
<tr>
<td>15</td>
<td>0x0f</td>
<td colspan="8">Clock delay for random column reads</td>
<td>Typically 1
</td></tr>
<tr>
<td>16</td>
<td>0x10</td>
<td>Page</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>8</td>
<td>4</td>
<td>2</td>
<td>1</td>
<td>Burst lengths supported (bitmap)
</td></tr>
<tr>
<td>17</td>
<td>0x11</td>
<td colspan="8">Banks per SDRAM device (1–255)</td>
<td>Typically 4
</td></tr>
<tr>
<td>18</td>
<td>0x12</td>
<td>—</td>
<td>4</td>
<td>3.5</td>
<td>3</td>
<td>2.5</td>
<td>2</td>
<td>1.5</td>
<td>1</td>
<td><span style="text-decoration:overline;">CAS</span> latencies supported (bitmap)
</td></tr>
<tr>
<td>19</td>
<td>0x13</td>
<td>—</td>
<td>6</td>
<td>5</td>
<td>4</td>
<td>3</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td><span style="text-decoration:overline;">CS</span> latencies supported (bitmap)
</td></tr>
<tr>
<td>20</td>
<td>0x14</td>
<td>—</td>
<td>6</td>
<td>5</td>
<td>4</td>
<td>3</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td><span style="text-decoration:overline;">WE</span> latencies supported (bitmap)
</td></tr>
<tr>
<td>21</td>
<td>0x15</td>
<td>—</td>
<td>x</td>
<td>Diff clock</td>
<td>FET switch external enable</td>
<td>FET switch on-board enable</td>
<td>On-card PLL</td>
<td>Registered</td>
<td>Buffered</td>
<td>Memory module feature bitmap
</td></tr>
<tr>
<td>22</td>
<td>0x16</td>
<td>Fast AP</td>
<td>Concurrent auto precharge</td>
<td>Upper V<sub>cc</sub> (supply voltage) tolerance</td>
<td>Lower V<sub>cc</sub> (supply voltage) tolerance</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>Includes weak driver</td>
<td>Memory chip feature bitmap
</td></tr>
<tr>
<td>23</td>
<td>0x17</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Clock cycle time at medium CAS latency.
</td></tr>
<tr>
<td>24</td>
<td>0x18</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>25</td>
<td>0x19</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Clock cycle time at short CAS latency.
</td></tr>
<tr>
<td>26</td>
<td>0x1a</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>27</td>
<td>0x1b</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–0.75)</td>
<td>Minimum row precharge time (t<sub>RP</sub>)
</td></tr>
<tr>
<td>28</td>
<td>0x1c</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–0.75)</td>
<td>Minimum row active–row active delay (t<sub>RRD</sub>)
</td></tr>
<tr>
<td>29</td>
<td>0x1d</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–0.75)</td>
<td>Minimum <span style="text-decoration:overline;">RAS</span> to <span style="text-decoration:overline;">CAS</span> delay (t<sub>RCD</sub>)
</td></tr>
<tr>
<td>30</td>
<td>0x1e</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum active to precharge time (t<sub>RAS</sub>)
</td></tr>
<tr>
<td>31</td>
<td>0x1f</td>
<td>512 MiB</td>
<td>256 MiB</td>
<td>128 MiB</td>
<td>64 MiB</td>
<td>32 MiB</td>
<td>16 MiB/<br>4 GiB</td>
<td>8 MiB/<br>2 GiB</td>
<td>4 MiB/<br>1 GiB</td>
<td>Module bank density (bitmap). Two bits set if different size banks.
</td></tr>
<tr>
<td>32</td>
<td>0x20</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Address/command setup time from clock
</td></tr>
<tr>
<td>33</td>
<td>0x21</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Address/command hold time after clock
</td></tr>
<tr>
<td>34</td>
<td>0x22</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data input setup time from clock
</td></tr>
<tr>
<td>35</td>
<td>0x23</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data input hold time after clock
</td></tr>
<tr>
<td>36–40
</td>
<td>0x24–0x28</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td>
<td>Superset information
</td></tr>
<tr>
<td>41</td>
<td>0x29</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum active to active/refresh time (t<sub>RC</sub>)
</td></tr>
<tr>
<td>42</td>
<td>0x2a</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum refresh to active/refresh time (t<sub>RFC</sub>)
</td></tr>
<tr>
<td>43</td>
<td>0x2b</td>
<td colspan="6">Nanoseconds (1–63, or 255: no maximum)</td>
<td colspan="2">0.25 ns (0–0.75)</td>
<td>Maximum clock cycle time (t<sub>CK</sub> max.)
</td></tr>
<tr>
<td>44</td>
<td>0x2c</td>
<td colspan="8">Hundredths of nanoseconds (0.01–2.55)</td>
<td>Maximum skew, DQS to any DQ. (t<sub>DQSQ</sub> max.)
</td></tr>
<tr>
<td>45</td>
<td>0x2d</td>
<td colspan="4">Tenths of nanoseconds (0.0–1.2)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Read data hold skew factor (t<sub>QHS</sub>)
</td></tr>
<tr>
<td>46</td>
<td>0x2e
</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td>
<td>For future standardization
</td></tr>
<tr>
<td>47</td>
<td>0x2f</td>
<td colspan="6">—</td>
<td colspan="2">Height</td>
<td>Height of DIMM module, table lookup
</td></tr>
<tr>
<td>48–61</td>
<td>0x30–0x3d
</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td>
<td>For future standardization
</td></tr>
<tr>
<td>62</td>
<td>0x3e</td>
<td colspan="4">Major revision (0–9)</td>
<td colspan="4">Minor revision (0–9)</td>
<td>SPD revision level, 0.0 or 1.0
</td></tr>
<tr>
<td>63</td>
<td>0x3f</td>
<td colspan="8">Checksum</td>
<td>Sum of bytes 0–62, <i>not then negated</i>
</td></tr>
<tr>
<td>64–71</td>
<td>0x40–47</td>
<td colspan="8">Manufacturer JEDEC id.</td>
<td>Stored little-endian, trailing zero-padded
</td></tr>
<tr>
<td>72</td>
<td>0x48</td>
<td colspan="8">Module manufacturing location</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>73–90</td>
<td>0x49–0x5a</td>
<td colspan="8">Module part number</td>
<td>ASCII, space-padded
</td></tr>
<tr>
<td>91–92</td>
<td>0x5b–0x5c</td>
<td colspan="8">Module revision code</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>93</td>
<td>0x5d</td>
<td colspan="4">Tens of years (0–90)</td>
<td colspan="4">Years (0–9)</td>
<td rowspan="2">Manufacturing date (YYWW)
</td></tr>
<tr>
<td>94</td>
<td>0x5e</td>
<td colspan="4">Tens of weeks (0–50)</td>
<td colspan="4">Weeks (0–9)
</td></tr>
<tr>
<td>95–98</td>
<td>0x5f–0x62</td>
<td colspan="8">Module serial number</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>99–127</td>
<td>0x63–0x7f</td>
<td colspan="8">Manufacturer-specific data</td>
<td>Could be enhanced performance profile
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="DDR2_SDRAM">DDR2 SDRAM</h3></div>
<p>The DDR2 SPD standard makes a number of changes, but is roughly similar to the above. One notable deletion is the confusing and little-used support for DIMMs with two ranks of different sizes.
</p><p>For cycle time fields (bytes 9, 23, 25 and 49), which are encoded in <a href="Binary-coded_decimal" title="Binary-coded decimal">BCD</a>, some additional encodings are defined for the tenths digit to represent some common timings exactly:
</p>
<table class="wikitable">
<caption>DDR2 BCD extensions
</caption>
<tbody><tr>
<th>Hex</th>
<th>Binary</th>
<th>Significance
</th></tr>
<tr>
<td>A</td>
<td>1010</td>
<td>0.25 (<style data-mw-deduplicate="TemplateStyles:r1154941027">
/* start https://en.wikipedia.org/ */
.mw-parser-output .frac{white-space:nowrap}.mw-parser-output .frac .num,.mw-parser-output .frac .den{font-size:80%;line-height:0;vertical-align:super}.mw-parser-output .frac .den{vertical-align:sub}.mw-parser-output .sr-only{border:0;clip:rect(0,0,0,0);clip-path:polygon(0px 0px,0px 0px,0px 0px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
/* end https://en.wikipedia.org/ */
</style><span class="frac"><span class="num">1</span>⁄<span class="den">4</span></span>)
</td></tr>
<tr>
<td>B</td>
<td>1011</td>
<td>0.33 (<span class="frac"><span class="num">1</span>⁄<span class="den">3</span></span>)
</td></tr>
<tr>
<td>C</td>
<td>1100</td>
<td>0.66 (<span class="frac"><span class="num">2</span>⁄<span class="den">3</span></span>)
</td></tr>
<tr>
<td>D</td>
<td>1101</td>
<td>0.75 (<span class="frac"><span class="num">3</span>⁄<span class="den">4</span></span>)
</td></tr>
<tr>
<td>E</td>
<td>1110</td>
<td>0.875 (<span class="frac"><span class="num">7</span>⁄<span class="den">8</span></span>, Nvidia XMP extension)
</td></tr>
<tr>
<td>F</td>
<td>1111</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr></tbody></table>
<table class="wikitable">
<caption>SPD contents for DDR2 SDRAM<sup id="cite_ref-spd_ddr2_9-0" class="reference"><a href="#cite_note-spd_ddr2-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th colspan="2">Byte
</th>
<th colspan="8">Bit
</th>
<th rowspan="2">Notes
</th></tr>
<tr>
<th>Dec</th>
<th>Hex</th>
<th>7</th>
<th>6</th>
<th>5</th>
<th>4</th>
<th>3</th>
<th>2</th>
<th>1</th>
<th>0
</th></tr>
<tr>
<td>0</td>
<td>0x00</td>
<td colspan="8">Number of bytes written</td>
<td>Typically 128
</td></tr>
<tr>
<td>1</td>
<td>0x01</td>
<td colspan="8">log<sub>2</sub>(size of SPD EEPROM)</td>
<td>Typically 8 (256 bytes)
</td></tr>
<tr>
<td>2</td>
<td>0x02</td>
<td colspan="8">Basic memory type (8 = DDR2 SDRAM)</td>
<td>
</td></tr>
<tr>
<td>3</td>
<td>0x03</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="4">Row address bits (1–15)</td>
<td>
</td></tr>
<tr>
<td>4</td>
<td>0x04</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="4">Column address bits (1–15)</td>
<td>
</td></tr>
<tr>
<td>5</td>
<td>0x05</td>
<td colspan="3">Vertical height</td>
<td>Stack?</td>
<td>ConC?</td>
<td colspan="3">Ranks−1 (1–8)</td>
<td>Commonly 0 or 1, meaning 1 or 2
</td></tr>
<tr>
<td>6</td>
<td>0x06</td>
<td colspan="8">Module data width</td>
<td>Commonly 64, or 72 for ECC DIMMs
</td></tr>
<tr>
<td>7</td>
<td>0x07</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>
</td></tr>
<tr>
<td>8</td>
<td>0x08</td>
<td colspan="8">Interface voltage level of this assembly (not the same as V<sub>cc</sub> supply voltage) (0–5)</td>
<td>Decoded by table lookup.<br>Commonly 5 = SSTL 1.8 V
</td></tr>
<tr>
<td>9</td>
<td>0x09</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Clock cycle time at highest CAS latency.
</td></tr>
<tr>
<td>10</td>
<td>0x0a</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>SDRAM access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>11</td>
<td>0x0b</td>
<td colspan="8">DIMM configuration type (0–2): non-ECC, parity, ECC</td>
<td>Table lookup
</td></tr>
<tr>
<td>12</td>
<td>0x0c</td>
<td>Self</td>
<td colspan="7">Refresh period (0–5): 64, 256, 128, 32, 16, 8 kHz</td>
<td>Refresh requirements
</td></tr>
<tr>
<td>13</td>
<td>0x0d</td>
<td colspan="8">Primary SDRAM width (1–255)</td>
<td>Commonly 8 (module built from ×8 parts) or 16
</td></tr>
<tr>
<td>14</td>
<td>0x0e</td>
<td colspan="8">ECC SDRAM width (0–255)</td>
<td>Width of bank ECC/parity SDRAM devices. Commonly 0 or 8.
</td></tr>
<tr>
<td>15</td>
<td>0x0f</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>
</td></tr>
<tr>
<td>16</td>
<td>0x10</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>8</td>
<td>4</td>
<td>—</td>
<td>—</td>
<td>Burst lengths supported (bitmap)
</td></tr>
<tr>
<td>17</td>
<td>0x11</td>
<td colspan="8">Banks per SDRAM device (1–255)</td>
<td>Typically 4 or 8
</td></tr>
<tr>
<td>18</td>
<td>0x12</td>
<td>7</td>
<td>6</td>
<td>5</td>
<td>4</td>
<td>3</td>
<td>2</td>
<td>—</td>
<td>—</td>
<td><span style="text-decoration:overline;">CAS</span> latencies supported (bitmap)
</td></tr>
<tr>
<td>19</td>
<td>0x13</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>
</td></tr>
<tr>
<td>20</td>
<td>0x14</td>
<td>—</td>
<td>—</td>
<td>Mini-UDIMM</td>
<td>Mini-RDIMM</td>
<td>Micro-DIMM</td>
<td>SO-DIMM</td>
<td>UDIMM</td>
<td>RDIMM</td>
<td>DIMM type of this assembly (bitmap)
</td></tr>
<tr>
<td>21</td>
<td>0x15</td>
<td>—</td>
<td>Module is analysis probe</td>
<td>—</td>
<td>FET switch external enable</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>Memory module feature bitmap
</td></tr>
<tr>
<td>22</td>
<td>0x16</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>—</td>
<td>Includes weak driver</td>
<td>Memory chip feature bitmap
</td></tr>
<tr>
<td>23</td>
<td>0x17</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Clock cycle time at medium CAS latency.
</td></tr>
<tr>
<td>24</td>
<td>0x18</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>25</td>
<td>0x19</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Clock cycle time at short CAS latency.
</td></tr>
<tr>
<td>26</td>
<td>0x1a</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data access time from clock (t<sub>AC</sub>)
</td></tr>
<tr>
<td>27</td>
<td>0x1b</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">1/4 ns (0–0.75)</td>
<td>Minimum row precharge time (t<sub>RP</sub>)
</td></tr>
<tr>
<td>28</td>
<td>0x1c</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">1/4 ns (0–0.75)</td>
<td>Minimum row active–row active delay (t<sub>RRD</sub>)
</td></tr>
<tr>
<td>29</td>
<td>0x1d</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">1/4 ns (0–0.75)</td>
<td>Minimum <span style="text-decoration:overline;">RAS</span> to <span style="text-decoration:overline;">CAS</span> delay (t<sub>RCD</sub>)
</td></tr>
<tr>
<td>30</td>
<td>0x1e</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum active to precharge time (t<sub>RAS</sub>)
</td></tr>
<tr>
<td>31</td>
<td>0x1f</td>
<td>512 MiB</td>
<td>256 MiB</td>
<td>128 MiB</td>
<td>16 GiB</td>
<td>8 GiB</td>
<td>4 GiB</td>
<td>2 GiB</td>
<td>1 GiB</td>
<td>Size of each rank (bitmap).
</td></tr>
<tr>
<td>32</td>
<td>0x20</td>
<td colspan="4">Tenths of nanoseconds (0.0–1.2)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Address/command setup time from clock
</td></tr>
<tr>
<td>33</td>
<td>0x21</td>
<td colspan="4">Tenths of nanoseconds (0.0–1.2)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Address/command hold time after clock
</td></tr>
<tr>
<td>34</td>
<td>0x22</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data input setup time from strobe
</td></tr>
<tr>
<td>35</td>
<td>0x23</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td colspan="4">Hundredths of nanoseconds (0.00–0.09)</td>
<td>Data input hold time after strobe
</td></tr>
<tr>
<td>36</td>
<td>0x24</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–0.75)</td>
<td>Minimum write recovery time (t<sub>WR</sub>)
</td></tr>
<tr>
<td>37</td>
<td>0x25</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–0.75)</td>
<td>Internal write to read command delay (t<sub>WTR</sub>)
</td></tr>
<tr>
<td>38</td>
<td>0x26</td>
<td colspan="6">Nanoseconds (1–63)</td>
<td colspan="2">0.25 ns (0–0.75)</td>
<td>Internal read to precharge command delay (t<sub>RTP</sub>)
</td></tr>
<tr>
<td>39</td>
<td>0x27</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>Reserved for "memory analysis probe characteristics"
</td></tr>
<tr>
<td>40</td>
<td>0x28</td>
<td>—</td>
<td colspan="3">t<sub>RC</sub> fractional ns (0–5):<br>0, 0.25, 0.33, 0.5, 0.66, 0.75</td>
<td colspan="3">t<sub>RFC</sub> fractional ns (0–5):<br>0, 0.25, 0.33, 0.5, 0.66, 0.75</td>
<td>t<sub>RFC</sub> + 256 ns</td>
<td>Extension of bytes 41 and 42.
</td></tr>
<tr>
<td>41</td>
<td>0x29</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum active to active/refresh time (t<sub>RC</sub>)
</td></tr>
<tr>
<td>42</td>
<td>0x2a</td>
<td colspan="8">Nanoseconds (1–255)</td>
<td>Minimum refresh to active/refresh time (t<sub>RFC</sub>)
</td></tr>
<tr>
<td>43</td>
<td>0x2b</td>
<td colspan="4">Nanoseconds (0–15)</td>
<td colspan="4">Tenths of nanoseconds (0.0–0.9)</td>
<td>Maximum clock cycle time (t<sub>CK</sub> max)
</td></tr>
<tr>
<td>44</td>
<td>0x2c</td>
<td colspan="8">Hundredths of nanoseconds (0.01–2.55)</td>
<td>Maximum skew, DQS to any DQ. (t<sub>DQSQ</sub> max)
</td></tr>
<tr>
<td>45</td>
<td>0x2d</td>
<td colspan="8">Hundredths of nanoseconds (0.01–2.55)</td>
<td>Read data hold skew factor (t<sub>QHS</sub>)
</td></tr>
<tr>
<td>46</td>
<td>0x2e</td>
<td colspan="8">Microseconds (1–255)</td>
<td>PLL relock time
</td></tr>
<tr>
<td>47–61</td>
<td>0x2f–0x3d</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>For future standardization.
</td></tr>
<tr>
<td>62</td>
<td>0x3e</td>
<td colspan="4">Major revision (0–9)</td>
<td colspan="4">Minor revision (0.0–0.9)</td>
<td>SPD revision level, usually 1.0
</td></tr>
<tr>
<td>63</td>
<td>0x3f</td>
<td colspan="8">Checksum</td>
<td>Sum of bytes 0–62, <i>not negated</i>
</td></tr>
<tr>
<td>64–71</td>
<td>0x40–47</td>
<td colspan="8">Manufacturer JEDEC ID</td>
<td>Stored little-endian, trailing zero-pad
</td></tr>
<tr>
<td>72</td>
<td>0x48</td>
<td colspan="8">Module manufacturing location</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>73–90</td>
<td>0x49–0x5a</td>
<td colspan="8">Module part number</td>
<td>ASCII, space-padded (limited to (,-,), A–Z, a–z, 0–9, space)
</td></tr>
<tr>
<td>91–92</td>
<td>0x5b–0x5c</td>
<td colspan="8">Module revision code</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>93</td>
<td>0x5d</td>
<td colspan="8">Years since 2000 (0–255)</td>
<td rowspan="2">Manufacturing date (YYWW)
</td></tr>
<tr>
<td>94</td>
<td>0x5e</td>
<td colspan="8">Weeks (1–52)
</td></tr>
<tr>
<td>95–98</td>
<td>0x5f–0x62</td>
<td colspan="8">Module serial number</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>99–127</td>
<td>0x63–0x7f</td>
<td colspan="8">Manufacturer-specific data</td>
<td>Could be enhanced performance profile
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="DDR3_SDRAM">DDR3 SDRAM</h3></div>
<p>The DDR3 SDRAM standard significantly overhauls and simplifies the SPD contents layout. Instead of a number of BCD-encoded nanosecond fields, some "timebase" units are specified to high precision, and various timing parameters are encoded as multiples of that base unit.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> Further, the practice of specifying different time values depending on the CAS latency has been dropped; now there are just a single set of timing parameters.
</p><p>Revision 1.1 lets some parameters be expressed as a "medium time base" value plus a (signed, −128 +127) "fine time base" correction. Generally, the medium time base is 1/8 ns (125 ps), and the fine time base is 1, 2.5 or 5 ps. For compatibility with earlier versions that lack the correction, the medium time base number is usually rounded up and the correction is negative. Values that work this way are:
</p>
<table class="wikitable">
<caption>DDR3 SPD two-part timing parameters
</caption>
<tbody><tr>
<th>MTB byte</th>
<th>FTB byte</th>
<th>Value
</th></tr>
<tr>
<td>12</td>
<td>34</td>
<td>t<sub>CK</sub>min, minimum clock period
</td></tr>
<tr>
<td>16</td>
<td>35</td>
<td>t<sub>AA</sub>min, minimum CAS latency time
</td></tr>
<tr>
<td>18</td>
<td>36</td>
<td>t<sub>RCD</sub>min, minimum RAS# to CAS# delay
</td></tr>
<tr>
<td>20</td>
<td>37</td>
<td>t<sub>RP</sub>min, minimum row precharge delay
</td></tr>
<tr>
<td>21, 23</td>
<td>38</td>
<td>t<sub>RC</sub>min, minimum active to active/precharge delay
</td></tr></tbody></table>
<table class="wikitable">
<caption>SPD contents for DDR3 SDRAM<sup id="cite_ref-spd_ddr3_docs_11-0" class="reference"><a href="#cite_note-spd_ddr3_docs-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th colspan="2">Byte
</th>
<th colspan="8">Bit
</th>
<th rowspan="2">Notes
</th></tr>
<tr>
<th>Dec</th>
<th>Hex</th>
<th>7</th>
<th>6</th>
<th>5</th>
<th>4</th>
<th>3</th>
<th>2</th>
<th>1</th>
<th>0
</th></tr>
<tr>
<td>0</td>
<td>0x00</td>
<td>Exclude serial from CRC</td>
<td colspan="3">SPD bytes total (undef/256)</td>
<td colspan="4">SPD bytes used (undef/128/176/256)</td>
<td>
</td></tr>
<tr>
<td>1</td>
<td>0x01</td>
<td colspan="4">SPD major revision</td>
<td colspan="4">SPD minor revision</td>
<td>1.0, 1.1, 1.2 or 1.3
</td></tr>
<tr>
<td>2</td>
<td>0x02</td>
<td colspan="8">Basic memory type (11 = DDR3 SDRAM)</td>
<td>Type of RAM chips
</td></tr>
<tr>
<td>3</td>
<td>0x03</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="4">Module type</td>
<td>Type of module; e.g., 2 = Unbuffered DIMM, 3 = SO-DIMM, 11=LRDIMM
</td></tr>
<tr>
<td>4</td>
<td>0x04</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td colspan="3">Bank address bits−3</td>
<td colspan="4">log<sub>2</sub>(bits per chip)−28</td>
<td>Zero means 8 banks, 256 Mibit.
</td></tr>
<tr>
<td>5</td>
<td>0x05</td>
<td colspan="2" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td colspan="3">Row address bits−12</td>
<td colspan="3">Column address bits−9</td>
<td>
</td></tr>
<tr>
<td>6</td>
<td>0x06</td>
<td colspan="5" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>1.25 V</td>
<td>1.35 V</td>
<td>Not 1.5 V</td>
<td>Modules voltages supported. 1.5 V is default.
</td></tr>
<tr>
<td>7</td>
<td>0x07</td>
<td colspan="2" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td colspan="3">ranks−1</td>
<td colspan="3">log<sub>2</sub>(I/O bits/chip)−2</td>
<td>Module organization
</td></tr>
<tr>
<td>8</td>
<td>0x08</td>
<td colspan="3" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td colspan="2">ECC bits (001=8)</td>
<td colspan="3">log<sub>2</sub>(data bits)−3</td>
<td>0x03 for 64-bit, non-ECC DIMM.
</td></tr>
<tr>
<td>9</td>
<td>0x09</td>
<td colspan="4">Dividend, picoseconds (1–15)</td>
<td colspan="4">Divisor, picoseconds (1–15)</td>
<td>Fine Time Base, dividend/divisor
</td></tr>
<tr>
<td>10</td>
<td>0x0a</td>
<td colspan="8">Dividend, nanoseconds (1–255)</td>
<td rowspan="2">Medium Time Base, dividend/divisor; commonly 1/8
</td></tr>
<tr>
<td>11</td>
<td>0x0b</td>
<td colspan="8">Divisor, nanoseconds (1–255)
</td></tr>
<tr>
<td>12</td>
<td>0x0c</td>
<td colspan="8">Minimum cycle time t<sub>CK</sub>min</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>13</td>
<td>0x0d</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>
</td></tr>
<tr>
<td>14</td>
<td>0x0e</td>
<td>11</td>
<td>10</td>
<td>9</td>
<td>8</td>
<td>7</td>
<td>6</td>
<td>5</td>
<td>4</td>
<td rowspan="2">CAS latencies supported (bitmap)
</td></tr>
<tr>
<td>15</td>
<td>0x0f</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td>18</td>
<td>17</td>
<td>16</td>
<td>15</td>
<td>14</td>
<td>13</td>
<td>12
</td></tr>
<tr>
<td>16</td>
<td>0x10</td>
<td colspan="8">Minimum CAS latency time, t<sub>AA</sub>min</td>
<td>In multiples of MTB; e.g., 80/8 ns.
</td></tr>
<tr>
<td>17</td>
<td>0x11</td>
<td colspan="8">Minimum write recovery time, t<sub>WR</sub>min</td>
<td>In multiples of MTB; e.g., 120/8 ns.
</td></tr>
<tr>
<td>18</td>
<td>0x12</td>
<td colspan="8">Minimum RAS to CAS delay time, t<sub>RCD</sub>min</td>
<td>In multiples of MTB; e.g., 100/8 ns.
</td></tr>
<tr>
<td>19</td>
<td>0x13</td>
<td colspan="8">Minimum row to row active delay time, t<sub>RRD</sub>min</td>
<td>In multiples of MTB; e.g., 60/8 ns.
</td></tr>
<tr>
<td>20</td>
<td>0x14</td>
<td colspan="8">Minimum row precharge time, t<sub>RP</sub>min</td>
<td>In multiples of MTB; e.g., 100/8 ns.
</td></tr>
<tr>
<td>21</td>
<td>0x15</td>
<td colspan="4">t<sub>RC</sub>min, bits 11:8</td>
<td colspan="4">t<sub>RAS</sub>min, bits 11:8</td>
<td>Upper 4 bits of bytes 23 and 22
</td></tr>
<tr>
<td>22</td>
<td>0x16</td>
<td colspan="8">Minimum active to time, t<sub>RAS</sub>min, bits 7:0</td>
<td>In multiples of MTB; e.g., 280/8 ns.
</td></tr>
<tr>
<td>23</td>
<td>0x17</td>
<td colspan="8">Minimum active to active/refresh, t<sub>RC</sub>min, bits 7:0</td>
<td>In multiples of MTB; e.g., 396/8 ns.
</td></tr>
<tr>
<td>24</td>
<td>0x18</td>
<td colspan="8">Minimum refresh recovery delay, t<sub>RFC</sub>min, bits 7:0</td>
<td rowspan="2">In multiples of MTB; e.g., 1280/8 ns.
</td></tr>
<tr>
<td>25</td>
<td>0x19</td>
<td colspan="8">Minimum refresh recovery delay, t<sub>RFC</sub>min, bits 15:8
</td></tr>
<tr>
<td>26</td>
<td>0x1a</td>
<td colspan="8">Minimum internal write to read delay, t<sub>WTR</sub>min</td>
<td>In multiples of MTB; e.g., 60/8 ns.
</td></tr>
<tr>
<td>27</td>
<td>0x1b</td>
<td colspan="8">Minimum internal read to precharge delay, t<sub>RTP</sub>min</td>
<td>In multiples of MTB; e.g., 60/8 ns.
</td></tr>
<tr>
<td>28</td>
<td>0x1c</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="4">t<sub>FAW</sub>min, bits 11:8</td>
<td rowspan="2">In multiples of MTB; e.g., 240/8 ns.
</td></tr>
<tr>
<td>29</td>
<td>0x1d</td>
<td colspan="8">Minimum four activate window delay t<sub>FAW</sub>min, bits 7:0
</td></tr>
<tr>
<td>30</td>
<td>0x1e</td>
<td>DLL-off</td>
<td colspan="5" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td>RZQ/7</td>
<td>RZQ/6</td>
<td>SDRAM optional features support bitmap
</td></tr>
<tr>
<td>31</td>
<td>0x1f</td>
<td>PASR</td>
<td colspan="3" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td>ODTS</td>
<td>ASR</td>
<td>ETR 1×</td>
<td>ETR (95 °C)</td>
<td>SDRAM thermal and refresh options
</td></tr>
<tr>
<td>32</td>
<td>0x20</td>
<td>Present</td>
<td colspan="7">Accuracy (TBD; currently 0 = undefined)</td>
<td>DIMM thermal sensor present?
</td></tr>
<tr>
<td>33</td>
<td>0x21</td>
<td>Nonstd.</td>
<td colspan="3">Die count</td>
<td colspan="2" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td colspan="2">Signal load</td>
<td>Nonstandard SDRAM device type (e.g., stacked die)
</td></tr>
<tr>
<td>34</td>
<td>0x22</td>
<td colspan="8">t<sub>CK</sub>min correction <i>(new for 1.1)</i></td>
<td>Signed multiple of FTB, added to byte 12
</td></tr>
<tr>
<td>35</td>
<td>0x23</td>
<td colspan="8">t<sub>AA</sub>min correction <i>(new for 1.1)</i></td>
<td>Signed multiple of FTB, added to byte 16
</td></tr>
<tr>
<td>36</td>
<td>0x24</td>
<td colspan="8">t<sub>RCD</sub>min correction <i>(new for 1.1)</i></td>
<td>Signed multiple of FTB, added to byte 18
</td></tr>
<tr>
<td>37</td>
<td>0x25</td>
<td colspan="8">t<sub>RP</sub>min correction <i>(new for 1.1)</i></td>
<td>Signed multiple of FTB, added to byte 20
</td></tr>
<tr>
<td>38</td>
<td>0x26</td>
<td colspan="8">t<sub>RC</sub>min correction <i>(new for 1.1)</i></td>
<td>Signed multiple of FTB, added to byte 23
</td></tr>
<tr>
<td>39–40</td>
<td>0x27–0x28</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>For future standardization.
</td></tr>
<tr>
<td>41</td>
<td>0x29</td>
<td colspan="2">Vendor specific</td>
<td colspan="2">t<sub>MAW</sub></td>
<td colspan="4">Maximum Activate Count (MAC) (untested/700k/600k/.../200k/reserved/∞)</td>
<td>For <a href="Row_hammer" title="Row hammer">row hammer</a> mitigation
</td></tr>
<tr>
<td>42–59</td>
<td>0x2a–0x3b</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>For future standardization.
</td></tr>
<tr>
<td>60</td>
<td>0x3c</td>
<td colspan="3" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">—</td>
<td colspan="5">Module height, mm (1–31, >45)</td>
<td>Module nominal height
</td></tr>
<tr>
<td>61</td>
<td>0x3d</td>
<td colspan="4">Back thickness, mm (1–16)</td>
<td colspan="4">Front thickness, mm (1–16)</td>
<td>Module thickness, value = ceil(mm) − 1
</td></tr>
<tr>
<td>62</td>
<td>0x3e</td>
<td>Design</td>
<td colspan="2">Revision</td>
<td colspan="5">JEDEC design number</td>
<td>JEDEC reference design used (11111=none)
</td></tr>
<tr>
<td>63–116</td>
<td>0x3f–0x74</td>
<td colspan="8">Module-specific section</td>
<td>Differs between registered/unbuffered
</td></tr>
<tr>
<td>117</td>
<td>0x75</td>
<td colspan="8">Module manufacturer ID, lsbyte</td>
<td rowspan="2">Assigned by JEP-106
</td></tr>
<tr>
<td>118</td>
<td>0x76</td>
<td colspan="8">Module manufacturer ID, msbyte
</td></tr>
<tr>
<td>119</td>
<td>0x77</td>
<td colspan="8">Module manufacturing location</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>120</td>
<td>0x78</td>
<td colspan="4">Tens of years</td>
<td colspan="4">Years</td>
<td>Manufacturing year (BCD)
</td></tr>
<tr>
<td>121</td>
<td>0x79</td>
<td colspan="4">Tens of weeks</td>
<td colspan="4">Weeks</td>
<td>Manufacturing week (BCD)
</td></tr>
<tr>
<td>122–125</td>
<td>0x7a–0x7d</td>
<td colspan="8">Module serial number</td>
<td>Vendor-specific code
</td></tr>
<tr>
<td>126–127</td>
<td>0x7e–0x7f</td>
<td colspan="8">SPD CRC-16</td>
<td>Includes bytes 0–116 or 0–125; see byte 0 bit 7
</td></tr>
<tr>
<td>128–145</td>
<td>0x80–0x91</td>
<td colspan="8">Module part number</td>
<td>ASCII subset, space-padded
</td></tr>
<tr>
<td>146–147</td>
<td>0x92–0x93</td>
<td colspan="8">Module revision code</td>
<td>Vendor-defined
</td></tr>
<tr>
<td>148–149</td>
<td>0x94–0x95</td>
<td colspan="8">DRAM manufacturer ID</td>
<td>As distinct from module manufacturer
</td></tr>
<tr>
<td>150–175</td>
<td>0x96–0xAF</td>
<td colspan="8">Manufacturer-specific data
</td></tr>
<tr>
<td>176–255</td>
<td>0xB0–0xFF</td>
<td colspan="8">Available for customer use
</td></tr></tbody></table>
<p>The memory capacity of a module can be computed from bytes 4, 7 and 8. The module width (byte 8) divided by the number of bits per chip (byte 7) gives the number of chips per rank. That can then be multiplied by the per-chip capacity (byte 4) and the number of ranks of chips on the module (usually 1 or 2, from byte 7).
</p>
<div class="mw-heading mw-heading3"><h3 id="DDR4_SDRAM">DDR4 SDRAM</h3></div>
<p>The DDR4 SDRAM "Annex L" standard for SPD changes the EEPROM module used. Instead of the old AT24C02-compatible 256-byte EEPROMs, JEDEC now defines a new nonstandard EE1004 type with two pages at the SMBus level each with 256 bytes. The new memory still uses the old 0x50–0x57 addresses, but two additional address at 0x36 (SPA0) and 0x37 (SPA1) are now used to receive commands to select the currently-active page for the bus, a form of <a href="Bank_switching" title="Bank switching">bank switching</a>.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Internally each logical page is further divided into two physical blocks of 128 bytes each, totaling four blocks and 512 bytes.<sup id="cite_ref-annex_l_14-0" class="reference"><a href="#cite_note-annex_l-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> Other semantics for "special" address ranges remain the same, although write protection is now addressed by blocks and a high voltage at SA0 is now required to change its status.<sup id="cite_ref-TSE2004_15-0" class="reference"><a href="#cite_note-TSE2004-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p><p>Annex L defines a few different layouts that can be plugged into a 512-byte (of which a maximum of 320 bytes are defined) template, depending on the type of the memory module. The bit definitions are similar to DDR3.<sup id="cite_ref-annex_l_14-1" class="reference"><a href="#cite_note-annex_l-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p>
<table class="wikitable">
<caption>SPD contents for DDR4 SDRAM<sup id="cite_ref-spd_ddr4_docs_16-0" class="reference"><a href="#cite_note-spd_ddr4_docs-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th colspan="2">Byte
</th>
<th colspan="8">Bit
</th>
<th rowspan="2">Notes
</th></tr>
<tr>
<th>Dec</th>
<th>Hex</th>
<th>7</th>
<th>6</th>
<th>5</th>
<th>4</th>
<th>3</th>
<th>2</th>
<th>1</th>
<th>0
</th></tr>
<tr>
<td>0</td>
<td>0x00</td>
<td colspan="8">SPD bytes used
</td></tr>
<tr>
<td>1</td>
<td>0x01</td>
<td colspan="8">SPD revision n</td>
<td>Typically 0x10, 0x11, 0x12
</td></tr>
<tr>
<td>2</td>
<td>0x02</td>
<td colspan="8">Basic memory type (12 = DDR4 SDRAM)</td>
<td>Type of RAM chips
</td></tr>
<tr>
<td>3</td>
<td>0x03</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="4">Module type</td>
<td>Type of module; e.g., 2 = Unbuffered DIMM, 3 = SO-DIMM, 11=LRDIMM
</td></tr>
<tr>
<td>4</td>
<td>0x04</td>
<td colspan="2">Bank group bits</td>
<td colspan="2">Bank address bits−2</td>
<td colspan="4">Total SDRAM capacity per die in megabits</td>
<td>Zero means no bank groups, 4 banks, 256 Mibit.
</td></tr>
<tr>
<td>5</td>
<td>0x05</td>
<td colspan="2" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="3">Row address bits−12</td>
<td colspan="3">Column address bits−9</td>
<td>
</td></tr>
<tr>
<td>6</td>
<td>0x06</td>
<td>Primary SDRAM package type</td>
<td colspan="3">Die count</td>
<td colspan="2" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="2">Signal loading
</td></tr>
<tr>
<td>7</td>
<td>0x07</td>
<td colspan="2" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="2">Maximum activate window (tMAW)</td>
<td colspan="4">Maximum activate count (MAC)</td>
<td>SDRAM optional features
</td></tr>
<tr>
<td>8</td>
<td>0x08</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>SDRAM thermal and refresh options
</td></tr>
<tr>
<td>9</td>
<td>0x09</td>
<td colspan="2">Post package repair (PPR)</td>
<td>Soft PPR</td>
<td colspan="5" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>Other SDRAM optional features
</td></tr>
<tr>
<td>10</td>
<td>0x0a</td>
<td>SDRAM package type</td>
<td colspan="3">Die count−1</td>
<td colspan="2">DRAM density ratio</td>
<td colspan="2">Signal loading</td>
<td>Secondary SDRAM package type
</td></tr>
<tr>
<td>11</td>
<td>0x0b</td>
<td colspan="6" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>Endurant flag</td>
<td>Operable flag</td>
<td>Module nominal voltage, VDD
</td></tr>
<tr>
<td>12</td>
<td>0x0c</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>Rank mix</td>
<td colspan="3">Package ranks per DIMM−1</td>
<td colspan="3">SDRAM device width</td>
<td>Module organization
</td></tr>
<tr>
<td>13</td>
<td>0x0d</td>
<td colspan="3" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="2">Bus width extension</td>
<td colspan="3">Primary bus width</td>
<td>Module memory bus width in bits
</td></tr>
<tr>
<td>14</td>
<td>0x0e</td>
<td>Thermal sensor</td>
<td colspan="7" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>Module thermal sensor
</td></tr>
<tr>
<td>15</td>
<td>0x0f</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="4">Extended base module type
</td></tr>
<tr>
<td>16</td>
<td>0x10</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr>
<tr>
<td>17</td>
<td>0x11</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="2">Medium timebase (MTB)</td>
<td colspan="2">Fine timebase (FTB)</td>
<td>Measured in ps.
</td></tr>
<tr>
<td>18</td>
<td>0x12</td>
<td colspan="8">Minimum SDRAM cycle time, t<sub>CKAVG</sub>min</td>
<td>In multiples of MTB; e.g., 100/8 ns.
</td></tr>
<tr>
<td>19</td>
<td>0x13</td>
<td colspan="8">Maximum SDRAM cycle time, t<sub>CKAVG</sub>max</td>
<td>In multiples of MTB; e.g., 60/8 ns.
</td></tr>
<tr>
<td>20</td>
<td>0x14</td>
<td>14</td>
<td>13</td>
<td>12</td>
<td>11</td>
<td>10</td>
<td>9</td>
<td>8</td>
<td>7</td>
<td>CAS latencies supported bit-mask
</td></tr>
<tr>
<td>21</td>
<td>0x15</td>
<td>22</td>
<td>21</td>
<td>20</td>
<td>19</td>
<td>18</td>
<td>17</td>
<td>16</td>
<td>15</td>
<td>CAS latencies supported bit-mask
</td></tr>
<tr>
<td>22</td>
<td>0x16</td>
<td>30</td>
<td>29</td>
<td>28</td>
<td>27</td>
<td>26</td>
<td>25</td>
<td>24</td>
<td>23</td>
<td>CAS latencies supported bit-mask
</td></tr>
<tr>
<td>23</td>
<td>0x17</td>
<td>Low CL range</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>36</td>
<td>35</td>
<td>34</td>
<td>33</td>
<td>32</td>
<td>31</td>
<td>CAS latencies supported bit-mask
</td></tr>
<tr>
<td>24</td>
<td>0x18</td>
<td colspan="8">Minimum CAS latency time, t<sub>AA</sub>min</td>
<td>In multiples of MTB; e.g., 1280/8 ns.
</td></tr>
<tr>
<td>25</td>
<td>0x19</td>
<td colspan="8">Minimum RAS to CAS delay time, t<sub>RCD</sub>min</td>
<td>In multiples of MTB; e.g., 60/8 ns.
</td></tr>
<tr>
<td>26</td>
<td>0x1a</td>
<td colspan="8">Minimum row precharge delay time, t<sub>RP</sub>min</td>
<td>In multiples of MTB; e.g., 60/8 ns.
</td></tr>
<tr>
<td>27</td>
<td>0x1b</td>
<td colspan="8">Upper nibbles for t<sub>RAS</sub>min and t<sub>RC</sub>min
</td></tr>
<tr>
<td>28</td>
<td>0x1c</td>
<td colspan="8">Minimum active to precharge delay time, t<sub>RAS</sub>min least significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>29</td>
<td>0x1d</td>
<td colspan="8">Minimum active to active/refresh delay time, t<sub>RC</sub>min least significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>30</td>
<td>0x1e</td>
<td colspan="8">Minimum refresh recovery delay time, t<sub>RFC1</sub>min least significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>31</td>
<td>0x1f</td>
<td colspan="8">Minimum refresh recovery delay time, t<sub>RFC1</sub>min most significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>32</td>
<td>0x20</td>
<td colspan="8">Minimum refresh recovery delay time, t<sub>RFC2</sub>min least significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>33</td>
<td>0x21</td>
<td colspan="8">Minimum refresh recovery delay time, t<sub>RFC2</sub>min most significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>34</td>
<td>0x22</td>
<td colspan="8">Minimum refresh recovery delay time, t<sub>RFC4</sub>min least significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>35</td>
<td>0x23</td>
<td colspan="8">Minimum refresh recovery delay time, t<sub>RFC4</sub>min most significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>36</td>
<td>0x24</td>
<td colspan="4" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td colspan="4">t<sub>FAW</sub>min most significant nibble
</td></tr>
<tr>
<td>37</td>
<td>0x25</td>
<td colspan="8">Minimum four activate window delay time, t<sub>FAW</sub>min least significant byte</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>38</td>
<td>0x26</td>
<td colspan="8">Minimum activate to activate delay time, t<sub>RRD_S</sub>min, different bank group</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>39</td>
<td>0x27</td>
<td colspan="8">Minimum activate to activate delay time, t<sub>RRD_L</sub>min, same bank group</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>40</td>
<td>0x28</td>
<td colspan="8">Minimum CAS to CAS delay time, t<sub>CCD_L</sub>min, same bank group</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>41</td>
<td>0x29</td>
<td colspan="8">Upper nibble for t<sub>WR</sub>min
</td></tr>
<tr>
<td>42</td>
<td>0x2a</td>
<td colspan="8">Minimum write recovery time, t<sub>WR</sub>min</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>43</td>
<td>0x2b</td>
<td colspan="8">Upper nibbles for t<sub>WTR</sub>min
</td></tr>
<tr>
<td>44</td>
<td>0x2c</td>
<td colspan="8">Minimum write to read time, t<sub>WTR_S</sub>min, different bank group</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>45</td>
<td>0x2d</td>
<td colspan="8">Minimum write to read time, t<sub>WTR_L</sub>min, same bank group</td>
<td>In multiples of MTB
</td></tr>
<tr>
<td>49–59</td>
<td>0x2e–0x3b</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>Base configuration section
</td></tr>
<tr>
<td>60–77</td>
<td>0x3c–0x4d</td>
<td colspan="8">Connector to SDRAM bit mapping
</td></tr>
<tr>
<td>78–116</td>
<td>0x4e–0x74</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>Base configuration section
</td></tr>
<tr>
<td>117</td>
<td>0x75</td>
<td colspan="8">Fine offset for minimum CAS to CAS delay time, t<sub>CCD_L</sub>min, same bank</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>118</td>
<td>0x76</td>
<td colspan="8">Fine offset for minimum activate to activate delay time, t<sub>RRD_L</sub>min, same bank group</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>119</td>
<td>0x77</td>
<td colspan="8">Fine offset for minimum activate to activate delay time, t<sub>RRD_S</sub>min, different bank group</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>120</td>
<td>0x78</td>
<td colspan="8">Fine offset for minimum active to active/refresh delay time, t<sub>RC</sub>min</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>121</td>
<td>0x79</td>
<td colspan="8">Fine offset for minimum row precharge delay time, t<sub>RP</sub>min</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>122</td>
<td>0x7a</td>
<td colspan="8">Fine offset for minimum RAS to CAS delay time, t<sub>RCD</sub>min</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>123</td>
<td>0x7b</td>
<td colspan="8">Fine offset for minimum CAS latency time, t<sub>AA</sub>min</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>124</td>
<td>0x7c</td>
<td colspan="8">Fine offset for SDRAM maximum cycle time, t<sub>CKAVG</sub>max</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>125</td>
<td>0x7d</td>
<td colspan="8">Fine offset for SDRAM minimum cycle time, t<sub>CKAVG</sub>min</td>
<td>Two's complement multiplier for FTB units
</td></tr>
<tr>
<td>126</td>
<td>0x7e</td>
<td colspan="8">Cyclic rendundancy code (CRC) for base config section, least significant byte</td>
<td>CRC16 algorithm
</td></tr>
<tr>
<td>127</td>
<td>0x7f</td>
<td colspan="8">Cyclic rendundancy code (CRC) for base config section, most significant byte</td>
<td>CRC16 algorithm
</td></tr>
<tr>
<td>128–191</td>
<td>0x80–0xbf</td>
<td colspan="8">Module-specific section</td>
<td>Dependent upon memory module family (UDIMM, RDIMM, LRDIMM)
</td></tr>
<tr>
<td>192–255</td>
<td>0xc0–0xff</td>
<td colspan="8">Hybrid memory architecture specific parameters
</td></tr>
<tr>
<td>256–319</td>
<td>0x100–0x13f</td>
<td colspan="8">Extended function parameter block
</td></tr>
<tr>
<td>320–321</td>
<td>0x140–0x141</td>
<td colspan="8">Module manufacturer</td>
<td>See JEP-106
</td></tr>
<tr>
<td>322</td>
<td>0x142</td>
<td colspan="8">Module manufacturing location</td>
<td>Manufacturer-defined manufacturing location code
</td></tr>
<tr>
<td>323</td>
<td>0x143</td>
<td colspan="8">Module manufacturing year</td>
<td>Represented in Binary Coded Decimal (BCD)
</td></tr>
<tr>
<td>324</td>
<td>0x144</td>
<td colspan="8">Module manufacturing week</td>
<td>Represented in Binary Coded Decimal (BCD)
</td></tr>
<tr>
<td>325–328</td>
<td>0x145–0x148</td>
<td colspan="8">Module serial number</td>
<td>Manufacturer-defined format for a unique serial number across part numbers
</td></tr>
<tr>
<td>329–348</td>
<td>0x149–0x15c</td>
<td colspan="8">Module part number</td>
<td>ASCII part number, unused digits should be set to 0x20
</td></tr>
<tr>
<td>349</td>
<td>0x15d</td>
<td colspan="8">Module revision code</td>
<td>Manufacturer-defined revision code
</td></tr>
<tr>
<td>350–351</td>
<td>0x15e–0x15f</td>
<td colspan="8">DRAM manufacturer ID code</td>
<td>See JEP-106
</td></tr>
<tr>
<td>352</td>
<td>0x160</td>
<td colspan="8">DRAM stepping</td>
<td>Manufacturer-defined stepping or 0xFF if not used
</td></tr>
<tr>
<td>353–381</td>
<td>0x161–0x17d</td>
<td colspan="8">Manufacturer's specific data
</td></tr>
<tr>
<td>382–383</td>
<td>0x17e–0x17f</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="DDR5_SDRAM">DDR5 SDRAM</h3></div>
<p>Preliminary table for DDR5, based on JESD400-5 specification.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>
</p><p>DDR5 expands the SPD table to 1024-byte. SPD of DDR5 is using the <a href="I3C_(bus)" title="I3C (bus)">I3C</a> bus.
</p>
<table class="wikitable">
<caption>SPD contents for DDR5 SDRAM
</caption>
<tbody><tr>
<th colspan="2">Byte
</th>
<th colspan="8">Bit
</th>
<th rowspan="2">Notes
</th></tr>
<tr>
<th>Dec</th>
<th>Hex</th>
<th>7</th>
<th>6</th>
<th>5</th>
<th>4</th>
<th>3</th>
<th>2</th>
<th>1</th>
<th>0
</th></tr>
<tr>
<td>0</td>
<td>0x00</td>
<td colspan="8">Number of bytes in SPD device</td>
<td>
</td></tr>
<tr>
<td>1</td>
<td>0x01</td>
<td colspan="8">SPD revision for base configuration parameters</td>
<td>
</td></tr>
<tr>
<td>2</td>
<td>0x02</td>
<td colspan="8">Key byte / host bus command protocol type</td>
<td>
</td></tr>
<tr>
<td>3</td>
<td>0x03</td>
<td colspan="8">Key byte / module type</td>
<td>
</td></tr>
<tr>
<td>4</td>
<td>0x04</td>
<td colspan="8">First SDRAM density and package</td>
<td>
</td></tr>
<tr>
<td>5</td>
<td>0x05</td>
<td colspan="8">First SDRAM addressing</td>
<td>
</td></tr>
<tr>
<td>6</td>
<td>0x06</td>
<td colspan="8">First SDRAM I/O width</td>
<td>
</td></tr>
<tr>
<td>7</td>
<td>0x07</td>
<td colspan="8">First SDRAM bank groups & banks per bank group</td>
<td>
</td></tr>
<tr>
<td>8</td>
<td>0x08</td>
<td colspan="8">Second SDRAM density and package</td>
<td>
</td></tr>
<tr>
<td>9</td>
<td>0x09</td>
<td colspan="8">Second SDRAM addressing</td>
<td>
</td></tr>
<tr>
<td>10</td>
<td>0x0a</td>
<td colspan="8">Second SDRAM I/O width</td>
<td>
</td></tr>
<tr>
<td>11</td>
<td>0x0b</td>
<td colspan="8">Second SDRAM bank groups & banks per bank group</td>
<td>
</td></tr>
<tr>
<td>12</td>
<td>0x0c</td>
<td colspan="8">SDRAM optional features</td>
<td>
</td></tr>
<tr>
<td>13</td>
<td>0x0d</td>
<td colspan="8">Thermal and refresh options</td>
<td>
</td></tr>
<tr>
<td>14</td>
<td>0x0e</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>
</td></tr>
<tr>
<td>15</td>
<td>0x0f</td>
<td colspan="8" data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved</td>
<td>
</td></tr>
<tr>
<td>16</td>
<td>0x10</td>
<td colspan="8">SDRAM nominal voltage, VDD</td>
<td>
</td></tr>
</tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Extensions">Extensions</h2></div>
<p>The JEDEC standard only specifies some of the SPD bytes. The truly critical data fits into the first 64 bytes,<sup id="cite_ref-spd_ddr_8-1" class="reference"><a href="#cite_note-spd_ddr-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-spd_ddr2_9-1" class="reference"><a href="#cite_note-spd_ddr2-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-spd_ddr3_18-0" class="reference"><a href="#cite_note-spd_ddr3-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-spd_base_19-0" class="reference"><a href="#cite_note-spd_base-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-spd_sdr_20-0" class="reference"><a href="#cite_note-spd_sdr-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> while some of the remainder is earmarked for manufacturer identification. However, a 256-byte EEPROM is generally provided. A number of uses have been made of the remaining space.
</p><p>Memory generally comes with conservative timing recommendations in the SPD ROM, to ensure basic functionality on all systems. Enthusiasts often spend considerable time manually adjusting the memory timings for higher speed. Enabling special configurations such as Intel XMP or AMD EXPO often requires additional testing to ensure system stability<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> and may void CPU warranty if used out of the manufacturer’s published specifications.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Enhanced_Performance_Profiles_(EPP)">Enhanced Performance Profiles (EPP)</h3></div>
<p>Enhanced Performance Profiles is an extension of SPD, developed by <a href="Nvidia" title="Nvidia">Nvidia</a> and <a href="Corsair_Gaming" title="Corsair Gaming">Corsair</a>, which includes additional information for higher-performance operation of <a href="DDR2_SDRAM" title="DDR2 SDRAM">DDR2 SDRAM</a>, including supply voltages and command timing information not included in the JEDEC SPD spec. The EPP information is stored in the same EEPROM, but in bytes 99–127, which are unused by standard DDR2 SPD.<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>
</p>
<table class="wikitable">
<caption>EPP SPD ROM usage
</caption>
<tbody><tr>
<th>Bytes</th>
<th>Size</th>
<th>Full profiles</th>
<th>Abbreviated profiles
</th></tr>
<tr>
<td>99–103</td>
<td>5</td>
<td colspan="2">EPP header
</td></tr>
<tr>
<td>104–109</td>
<td>6</td>
<td rowspan="2">Profile FP1</td>
<td>Profile AP1
</td></tr>
<tr>
<td>110–115</td>
<td>6</td>
<td>Profile AP2
</td></tr>
<tr>
<td>116–121</td>
<td>6</td>
<td rowspan="2">Profile FP2</td>
<td>Profile AP3
</td></tr>
<tr>
<td>122–127</td>
<td>6</td>
<td>Profile AP4
</td></tr></tbody></table>
<p>The parameters are particularly designed to fit the memory controller on the <a href="NForce_500" title="NForce 500">nForce 5</a>, <a href="NForce_600" title="NForce 600">nForce 6</a> and <a href="NForce_700" title="NForce 700">nForce 7</a> chipsets. Nvidia encourages support for EPP in the <a href="BIOS" title="BIOS">BIOS</a> for its high-end motherboard chipsets. This is intended to provide "one-click <a href="Overclocking" title="Overclocking">overclocking</a>" to get better performance with minimal effort.
</p><p>Nvidia's name for EPP memory that has been qualified for performance and stability is "SLI-ready memory".<sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> The term "SLI-ready-memory" has caused some confusion, as it has nothing to do with <a href="Scalable_Link_Interface" title="Scalable Link Interface">SLI video</a>. One can use EPP/SLI memory with a single video card (even a non-Nvidia card), and one can run a multi-card SLI video setup without EPP/SLI memory.
</p><p>An extended version, EPP 2.0, supports DDR3 memory as well.<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Intel_Extreme_Memory_Profile_(XMP)">Intel Extreme Memory Profile (XMP)</h3></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">"Intel XMP" redirects here; not to be confused with <a href="Intel_MPX" title="Intel MPX">Intel MPX</a>.</div>
<p>A similar, <a href="Intel" title="Intel">Intel</a>-developed JEDEC SPD extension was developed for <a href="DDR3_SDRAM" title="DDR3 SDRAM">DDR3 SDRAM</a> DIMMs, later used in <a href="DDR4_SDRAM" title="DDR4 SDRAM">DDR4</a> and <a href="DDR5_SDRAM" title="DDR5 SDRAM">DDR5 SDRAM</a> as well. XMP uses bytes 176–255, which are unallocated by JEDEC, to encode higher-performance memory timings.<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>
</p><p>Later, AMD developed AMP, an equivalent technology to XMP, for use in its "Radeon Memory" line of memory modules optimized for use in AMD platforms.<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup> Furthermore, motherboard developers implemented their own technologies to allow their AMD-based motherboards to read XMP profiles: MSI offers A-XMP,<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup> ASUS has DOCP (Direct Over Clock Profile), and Gigabyte has EOCP (Extended Over Clock Profile).<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup>
</p>
<table class="wikitable">
<caption>XMP SPD ROM usage<sup id="cite_ref-xmp1.1_33-0" class="reference"><a href="#cite_note-xmp1.1-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th>DDR3 Bytes</th>
<th>Size</th>
<th>Use
</th></tr>
<tr>
<td>176–184</td>
<td>10</td>
<td>XMP header
</td></tr>
<tr>
<td>185–219</td>
<td>33</td>
<td>XMP profile 1 ("enthusiast" settings)
</td></tr>
<tr>
<td>220–254</td>
<td>36</td>
<td>XMP profile 2 ("extreme" settings)
</td></tr></tbody></table>
<p>The header contains the following data. Most importantly, it contains a "medium timebase" value MTB, as a rational number of nanoseconds (common values are 1/8, 1/12 and 1/16 ns). Many other later timing values are expressed as an integer number of MTB units.
</p><p>Also included in the header is the number of DIMMs per memory channel that the profile is designed to support; including more DIMMs may not work well.
</p>
<table class="wikitable">
<caption>XMP Header bytes<sup id="cite_ref-xmp1.1_33-1" class="reference"><a href="#cite_note-xmp1.1-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th>DDR3 Byte</th>
<th>Bits</th>
<th>Use
</th></tr>
<tr>
<td>176</td>
<td>7:0</td>
<td>XMP <a href="Magic_number_(programming)" title="Magic number (programming)">magic number</a> byte 1 0x0C
</td></tr>
<tr>
<td>177</td>
<td>7:0</td>
<td>XMP magic number byte 2 0x4A
</td></tr>
<tr>
<td rowspan="5">178</td>
<td>0</td>
<td>Profile 1 enabled (if 0, disabled)
</td></tr>
<tr>
<td>1</td>
<td>Profile 2 enabled
</td></tr>
<tr>
<td>3:2</td>
<td>Profile 1 DIMMs per channel (1–4 encoded as 0–3)
</td></tr>
<tr>
<td>5:4</td>
<td>Profile 2 DIMMs per channel
</td></tr>
<tr>
<td>7:6</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr>
<tr>
<td rowspan="2">179</td>
<td>3:0</td>
<td>XMP minor version number (x.0 or x.1)
</td></tr>
<tr>
<td>7:4</td>
<td>XMP major version number (0.x or 1.x)
</td></tr>
<tr>
<td>180</td>
<td>7:0</td>
<td>Medium timebase dividend for profile 1
</td></tr>
<tr>
<td>181</td>
<td>7:0</td>
<td>Medium timebase divisor for profile 1 (MTB = dividend/divisor ns)
</td></tr>
<tr>
<td>182</td>
<td>7:0</td>
<td>Medium timebase dividend for profile 2 (e.g. 8)
</td></tr>
<tr>
<td>183</td>
<td>7:0</td>
<td>Medium timebase divisor for profile 2 (e.g. 1, giving MTB = 1/8 ns)
</td></tr>
<tr>
<td>184</td>
<td>7:0</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr></tbody></table>
<table class="wikitable">
<caption>XMP profile bytes<sup id="cite_ref-xmp1.1_33-2" class="reference"><a href="#cite_note-xmp1.1-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>
</caption>
<tbody><tr>
<th>DDR3 Byte 1</th>
<th>DDR3 Byte 2</th>
<th>Bits</th>
<th>Use
</th></tr>
<tr>
<td rowspan="4">185</td>
<td rowspan="4">220</td>
<td>0</td>
<td>Module Vdd voltage twentieths (0.00 or 0.05)
</td></tr>
<tr>
<td>4:1</td>
<td>Module Vdd voltage tenths (0.0–0.9)
</td></tr>
<tr>
<td>6:5</td>
<td>Module Vdd voltage units (0–2)
</td></tr>
<tr>
<td>7</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr>
<tr>
<td>186</td>
<td>221</td>
<td>7:0</td>
<td>Minimum SDRAM clock period t<sub>CK</sub>min (MTB units)
</td></tr>
<tr>
<td>187</td>
<td>222</td>
<td>7:0</td>
<td>Minimum CAS latency time t<sub>AA</sub>min (MTB units)
</td></tr>
<tr>
<td>188</td>
<td>223</td>
<td>7:0</td>
<td>CAS latencies supported (bitmap, 4–11 encoded as bits 0–7)
</td></tr>
<tr>
<td rowspan="2">189</td>
<td rowspan="2">224</td>
<td>6:0</td>
<td>CAS latencies supported (bitmap, 12–18 encoded as bits 0–6)
</td></tr>
<tr>
<td>7</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr>
<tr>
<td>190</td>
<td>225</td>
<td>7:0</td>
<td>Minimum CAS write latency time t<sub>CWL</sub>min (MTB units)
</td></tr>
<tr>
<td>191</td>
<td>226</td>
<td>7:0</td>
<td>Minimum row precharge delay time t<sub>RP</sub>min (MTB units)
</td></tr>
<tr>
<td>192</td>
<td>227</td>
<td>7:0</td>
<td>Minimum RAS to CAS delay time t<sub>RCD</sub>min (MTB units)
</td></tr>
<tr>
<td>193</td>
<td>228</td>
<td>7:0</td>
<td>Minimum write recovery time t<sub>WR</sub>min (MTB units)
</td></tr>
<tr>
<td rowspan="2">194</td>
<td rowspan="2">229</td>
<td>3:0</td>
<td>t<sub>RAS</sub>min upper <a href="Nibble" title="Nibble">nibble</a> (bits 11:8)
</td></tr>
<tr>
<td>7:4</td>
<td>t<sub>RC</sub>min upper nibble (bits 11:8)
</td></tr>
<tr>
<td>195</td>
<td>230</td>
<td>7:0</td>
<td>Minimum active to precharge delay time t<sub>RAS</sub>min bits 7:0 (MTB units)
</td></tr>
<tr>
<td>196</td>
<td>231</td>
<td>7:0</td>
<td>Minimum active to active/refresh delay time t<sub>RC</sub>min bits 7:0 (MTB units)
</td></tr>
<tr>
<td>197</td>
<td>232</td>
<td>7:0</td>
<td>Maximum average refresh interval t<sub>REFI</sub> lsbyte (MTB units)
</td></tr>
<tr>
<td>198</td>
<td>233</td>
<td>7:0</td>
<td>Maximum average refresh interval t<sub>REFI</sub> msbyte (MTB units)
</td></tr>
<tr>
<td>199</td>
<td>234</td>
<td>7:0</td>
<td>Minimum refresh recovery delay time t<sub>RFC</sub>min lsbyte (MTB units)
</td></tr>
<tr>
<td>200</td>
<td>235</td>
<td>7:0</td>
<td>Minimum refresh recovery delay time t<sub>RFC</sub>min msbyte (MTB units)
</td></tr>
<tr>
<td>201</td>
<td>236</td>
<td>7:0</td>
<td>Minimum internal read to precharge command delay time t<sub>RTP</sub>min (MTB units)
</td></tr>
<tr>
<td>202</td>
<td>237</td>
<td>7:0</td>
<td>Minimum row active to row active delay time t<sub>RRD</sub>min (MTB units)
</td></tr>
<tr>
<td rowspan="2">203</td>
<td rowspan="2">238</td>
<td>3:0</td>
<td>t<sub>FAW</sub>min upper nibble (bits 11:8)
</td></tr>
<tr>
<td>7:4</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr>
<tr>
<td>204</td>
<td>239</td>
<td>7:0</td>
<td>Minimum four activate window delay time t<sub>FAW</sub>min bits 7:0 (MTB units)
</td></tr>
<tr>
<td>205</td>
<td>240</td>
<td>7:0</td>
<td>Minimum internal write to read command delay time t<sub>WTR</sub>min (MTB units)
</td></tr>
<tr>
<td rowspan="4">206</td>
<td rowspan="4">241</td>
<td>2:0</td>
<td>Write to read command turnaround time adjustment (0–7 clock cycles)
</td></tr>
<tr>
<td>3</td>
<td>Write to read command turnaround adjustment sign (0=pull-in, 1=push-out)
</td></tr>
<tr>
<td>6:4</td>
<td>Read to write command turnaround time adjustment (0–7 clock cycles)
</td></tr>
<tr>
<td>7</td>
<td>Read to write command turnaround adjustment sign (0=pull-in, 1=push-out)
</td></tr>
<tr>
<td rowspan="3">207</td>
<td rowspan="3">242</td>
<td>2:0</td>
<td>Back-to-back command turnaround time adjustment (0–7 clock cycles)
</td></tr>
<tr>
<td>3</td>
<td>Back-to-back turnaround adjustment sign (0=pull-in, 1=push-out)
</td></tr>
<tr>
<td>7:4</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr>
<tr>
<td>208</td>
<td>243</td>
<td>7:0</td>
<td>System CMD rate mode. 0=JTAG default, otherwise in peculiar units of MTB × t<sub>CK</sub>/ns.<br>E.g. if MTB is 1/8 ns, then this is in units of 1/8 clock cycle.
</td></tr>
<tr>
<td>209</td>
<td>244</td>
<td>7:0</td>
<td>SDRAM auto self refresh performance.<br>Standard version 1.1 says documentation is <a href="https://en.wiktionary.org/wiki/TBD" class="extiw external" title="wikt:TBD">TBD</a>.
</td></tr>
<tr>
<td>210–218</td>
<td>245–253</td>
<td>7:0</td>
<td data-sort-value="" style="background: var(--background-color-interactive, #ececec); color: var(--color-base, inherit); vertical-align: middle; text-align: center;" class="table-na">Reserved
</td></tr>
<tr>
<td>219</td>
<td>254</td>
<td>7:0</td>
<td><i>Reserved</i>, vendor-specific personality code.
</td></tr></tbody></table>
<p>All data above are for DDR3 (XMP 1.1); DDR4 specs are not yet available.
</p>
<div class="mw-heading mw-heading3"><h3 id="AMD_Extended_Profiles_for_Overclocking_(EXPO)">AMD Extended Profiles for Overclocking (EXPO)</h3></div>
<p>AMD's Extended Profiles for Overclocking (EXPO) is a JEDEC SPD extension developed for <a href="DDR5_SDRAM" title="DDR5 SDRAM">DDR5</a> DIMMs to apply a one-click automatic overclocking profile to system memory.<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-JRoachDigitalTrends_35-0" class="reference"><a href="#cite_note-JRoachDigitalTrends-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup> AMD EXPO-certified DIMMs include optimised timings that optimise the performance of its <a href="Zen_4" title="Zen 4">Zen 4</a> processors.<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup> Unlike Intel's closed standard XMP, the EXPO standard is open and royalty-free.<sup id="cite_ref-JRoachDigitalTrends_35-1" class="reference"><a href="#cite_note-JRoachDigitalTrends-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup> It can be used on Intel platforms.<sup id="cite_ref-JRoachDigitalTrends_35-2" class="reference"><a href="#cite_note-JRoachDigitalTrends-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup> At launch in September 2022, there are 15 partner RAM kits with EXPO-certification available reaching up to 6400 MT/s.<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Vendor-specific_memory">Vendor-specific memory</h3></div>
<p>A common misuse is to write information to certain memory regions to bind vendor-specific memory modules to a specific system. <a href="Fujitsu_Technology_Solutions" title="Fujitsu Technology Solutions">Fujitsu Technology Solutions</a> is known to do this. Adding different memory module to the system usually results in a refusal or other counter-measures (like pressing F1 on every boot).
</p>
<pre>02 0E 00 01-00 00 00 EF-02 03 19 4D-BC 47 C3 46 ...........M.G.F
53 43 00 04-EF 4F 8D 1F-00 01 70 00-01 03 C1 CF SC...O....p.....
</pre>
<p>This is the output of a 512 MB memory module from Micron Technologies, branded for Fujitsu-Siemens Computers, note the "FSC" string.
The system BIOS rejects memory modules that don't have this information starting at offset 128h.
</p><p>Some Packard Bell AMD laptops also use this method, in this case the symptoms can vary but it can lead to a flashing cursor rather than a beep pattern. Incidentally this can also be a symptom of BIOS corruption as well.<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup> Though upgrading a 2 GB to a 4 GB can also lead to issues.
</p>
<div class="mw-heading mw-heading2"><h2 id="Reading_and_writing_SPD_information">Reading and writing SPD information</h2></div>
<p>Memory module manufacturers write the SPD information to the <a href="EEPROM" title="EEPROM">EEPROM</a> on the module. Motherboard <a href="BIOS" title="BIOS">BIOSes</a> read the SPD information to configure the memory controller. There exist several programs that are able to read and modify SPD information on most, but not all motherboard chipsets.
</p>
<ul><li><a rel="nofollow" class="external text" href="http://www.nongnu.org/dmidecode/">dmidecode</a> program that can decode information about memory (and other things) and runs on <a href="Linux" title="Linux">Linux</a>, <a href="FreeBSD" title="FreeBSD">FreeBSD</a>, <a href="NetBSD" title="NetBSD">NetBSD</a>, <a href="OpenBSD" title="OpenBSD">OpenBSD</a>, <a href="BeOS" title="BeOS">BeOS</a>, <a href="Cygwin" title="Cygwin">Cygwin</a> and <a href="Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris</a>. dmidecode does not access SPD information directly; it reports the <a href="SMBIOS" class="mw-redirect" title="SMBIOS">SMBIOS</a> data about the memory.<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup> This information may be limited or incorrect.</li>
<li>On <a href="Linux" title="Linux">Linux</a> systems and <a href="FreeBSD" title="FreeBSD">FreeBSD</a>, the <a href="User_space" class="mw-redirect" title="User space">user space</a> program decode-dimms provided by i2c-tools decodes and prints information on any memory with SPD information in the computer.<sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup> It requires <a href="System_Management_Bus" title="System Management Bus">SMBus</a> controller support in the kernel, the EEPROM kernel driver, and also that the SPD EEPROMs are connected to the SMBus. On older Linux distributions, decode-dimms.pl was available as part of <a href="Lm_sensors" title="Lm sensors">lm_sensors</a>.</li>
<li>OpenBSD has included a driver (<a rel="nofollow" class="external text" href="https://man.openbsd.org/spdmem.4">spdmem(4)</a>) since version 4.3 to provide information about memory modules. The driver was ported from NetBSD, where it is available since release 5.0.</li>
<li><a href="Coreboot" title="Coreboot">Coreboot</a> reads and uses SPD information to initialize all <a href="Memory_controller" title="Memory controller">memory controllers</a> in a computer with timing, size and other properties.</li>
<li><a href="Microsoft_Windows" title="Microsoft Windows">Windows</a> systems use programs like <a href="HWiNFO" class="mw-redirect" title="HWiNFO">HWiNFO</a>,<sup id="cite_ref-42" class="reference"><a href="#cite_note-42"><span class="cite-bracket">[</span>42<span class="cite-bracket">]</span></a></sup> <a href="CPU-Z" title="CPU-Z">CPU-Z</a> and <a href="Speccy" title="Speccy">Speccy</a>, which can read and display DRAM module information from SPD.</li></ul>
<p>Chipset-independent reading and writing of SPD information is done by accessing the memory's EEPROM directly with eeprom programmer hardware and software.
</p><p>A not so common use for old laptops is as generic SMBus readers, as the internal EEPROM on the module can be disabled once the BIOS has read it so the bus is essentially available for use. The method used is to pull low the A0,A1 lines so the internal memory shuts down, allowing the external device to access the SMBus. Once this is done, a custom Linux build or DOS application can then access the external device. A common use is recovering data from LCD panel memory chips to retrofit a generic panel into a proprietary laptop.
On some chips it is also a good idea to separate write protect lines so that the onboard chips do not get wiped during reprogramming.
A related technique is rewriting the chip on webcams often included with many laptops as the bus speed is substantially higher and can even be modified so that 25x compatible chips can be read back for later cloning of the uEFI in the event of a chip failure.
</p><p>This unfortunately only works on DDR3 and below, as DDR4 uses different security and can usually only be read. Its possible to use a tool like SPDTool or similar and replace the chip with one that has its WP line free so it can be altered in situ.
On some chipsets the message "Incompatible SMBus driver?" may be seen so read is also prevented.
</p>
<div class="mw-heading mw-heading3"><h3 id="RGB_LED_control">RGB LED control</h3></div>
<p>Some memory modules (especially on <a href="Gaming_PC" class="mw-redirect" title="Gaming PC">Gaming PCs</a>)<sup id="cite_ref-43" class="reference"><a href="#cite_note-43"><span class="cite-bracket">[</span>43<span class="cite-bracket">]</span></a></sup> support RGB LEDs that are controlled by proprietary SMBus commands. This allows LED color control without additional connectors and cables. Kernel drivers from multiple manufacturers required to control the lights have been exploited to gain access ranging from full kernel memory access, to MSR and I/O port control numerous times in 2020 alone.<sup id="cite_ref-44" class="reference"><a href="#cite_note-44"><span class="cite-bracket">[</span>44<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-45" class="reference"><a href="#cite_note-45"><span class="cite-bracket">[</span>45<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-46" class="reference"><a href="#cite_note-46"><span class="cite-bracket">[</span>46<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="On_older_equipment">On older equipment</h2></div>
<p>Some older equipment require the use of <a href="SIMM" title="SIMM">SIMMs</a> with <i>parallel</i> presence detect (more commonly called simply <i>presence detect</i> or PD). Some of this equipment uses non-standard PD coding, <a href="IBM" title="IBM">IBM</a> computers and <a href="Hewlett-Packard" title="Hewlett-Packard">Hewlett-Packard</a> <a href="LaserJet" class="mw-redirect" title="LaserJet">LaserJet</a> and other printers in particular.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Transducer_electronic_data_sheet" class="mw-redirect" title="Transducer electronic data sheet">Transducer electronic data sheet</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFThomas_P._KoenigNathan_John1997" class="citation cs2">Thomas P. Koenig; Nathan John (3 February 1997), <a rel="nofollow" class="external text" href="http://findarticles.com/p/articles/mi_m0EKF/is_n2153_v43/ai_19102210/">"Serial Presence Detection poised for limelight"</a>, <i>Electronic News</i>, <b>43</b> (2153)</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jedec.org/sites/default/files/docs/4_01_04R21.pdf">JEDEC Standard 21-C section 4.1.4</a> "Definition of the TSE2002av Serial Presence Detect (SPD) EEPROM with Temperature Sensor (TS) for Memory Module Applications"</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.micron.com/-/media/client/global/documents/products/technical-note/dram-modules/tn_04_42.pdf">"TN-04-42: Memory Module Serial Presence-Detect Write Protection"</a> <span class="cs1-format">(PDF)</span>. <i>Micron</i>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFDean_Kent1998" class="citation web cs1">Dean Kent (24 October 1998). <a rel="nofollow" class="external text" href="https://www.tomshardware.com/reviews/ram-guide,89.html">"Ram Guide"</a>. <i>Tom's Hardware</i>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFShimpi" class="citation web cs1">Shimpi, Anand Lal. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110524185521/http://www.anandtech.com/show/60">"PC100 SDRAM: An Introduction"</a>. <i>www.anandtech.com</i>. Archived from <a rel="nofollow" class="external text" href="https://www.anandtech.com/show/60">the original</a> on 24 May 2011.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.memorytesters.com/ramcheck/rc_ap3.htm">Application note INN-8668-APN3: SDRAM SPD Data Standards</a>, memorytesters.com</span>
</li>
<li id="cite_note-spd_pc100-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-spd_pc100_7-0">^</a></b></span> <span class="reference-text"><cite class="citation cs2"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20140531124526/http://www.taricorp.net/wp-content/uploads/2012/04/SPDSDRAM1.2a1.pdf"><i>PC SDRAM Serial Presence Detect (SPD) Specification</i></a> <span class="cs1-format">(PDF)</span>, 1.2A, December 1997, p. 28, archived from <a rel="nofollow" class="external text" href="http://www.taricorp.net/wp-content/uploads/2012/04/SPDSDRAM1.2a1.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 31 May 2014<span class="reference-accessdate">, retrieved <span class="nowrap">30 May</span> 2014</span></cite></span>
</li>
<li id="cite_note-spd_ddr-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-spd_ddr_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-spd_ddr_8-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jedec.org/download/search/4_01_02_04R13.PDF">JEDEC Standard 21-C section 4.1.2.4</a> "SPDs for DDR SDRAM"</span>
</li>
<li id="cite_note-spd_ddr2-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-spd_ddr2_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-spd_ddr2_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jedec.org/download/search/4_01_02_10R13.pdf">JEDEC Standard 21-C section 4.1.2.10</a> "Specific SPDs for DDR2 SDRAM"</span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20151222112142/http://www.simmtester.com/page/news/showpubnews.asp?num=153">"Understanding DDR3 Serial Presence Detect (SPD) Table"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.simmtester.com/page/news/showpubnews.asp?num=153">the original</a> on 22 December 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">29 May</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-spd_ddr3_docs-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-spd_ddr3_docs_11-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jedec.org/sites/default/files/docs/4_01_02_11R21.pdf">JESD21-C Annex K: Serial Presence Detect for DDR3 SDRAM Modules</a>, Release 4, SPD Revision 1.1</span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.softnology.biz/pdf/JEDEC_DDR3_SPD_4_01_02_11R24.pdf">JESD21-C Annex K: Serial Presence Detect for DDR3 SDRAM Modules</a>, Release 6, SPD Revision 1.3</span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite id="CITEREFDelvare" class="citation web cs1">Delvare, Jean. <a rel="nofollow" class="external text" href="https://lkml.org/lkml/2017/11/20/131">"[PATCH] eeprom: New ee1004 driver for DDR4 memory"</a>. <i>LKML</i><span class="reference-accessdate">. Retrieved <span class="nowrap">7 November</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-annex_l-14"><span class="mw-cite-backlink">^ <a href="#cite_ref-annex_l_14-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-annex_l_14-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFJEDEC" class="citation web cs1">JEDEC. <a rel="nofollow" class="external text" href="http://www.softnology.biz/pdf/4_01_02_AnnexL-R25_SPD_for_DDR4_SDRAM_Release_3_Sep2015.pdf">"Annex L: Serial Presence Detect (SPD) for DDR4 SDRAM Modules"</a> <span class="cs1-format">(PDF)</span>.</cite></span>
</li>
<li id="cite_note-TSE2004-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-TSE2004_15-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFJEDEC" class="citation web cs1">JEDEC. <a rel="nofollow" class="external text" href="http://www.softnology.biz/pdf/ee1004_tse2004.pdf">"EE1004 and TSE2004 Device Specification (Draft)"</a> <span class="cs1-format">(PDF)</span><span class="reference-accessdate">. Retrieved <span class="nowrap">7 November</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-spd_ddr4_docs-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-spd_ddr4_docs_16-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.jedec.org/system/files/docs/4_01_02_AnnexL-5R29.pdf">JESD21-C Annex L: Serial Presence Detect for DDR4 SDRAM Modules</a>, Release 5</span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.jedec.org/standards-documents/docs/jesd400-5b">"JESD400-5B(JESD400-5B)"</a>. <i>jedec</i>. 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">31 December</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-spd_ddr3-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-spd_ddr3_18-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jedec.org/download/search/4_01_02_11R18.pdf">JEDEC Standard 21-C section 4.1.2.11</a> "Serial Presence Detect (SPD) for DDR3 SDRAM Modules"</span>
</li>
<li id="cite_note-spd_base-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-spd_base_19-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jedec.org/download/search/4_01_02_00r9.pdf">JEDEC Standard 21-C section 4.1.2</a> "SERIAL PRESENCE DETECT STANDARD, General Standard"</span>
</li>
<li id="cite_note-spd_sdr-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-spd_sdr_20-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.jedec.org/download/search/4_01_02_05R12.PDF">JEDEC Standard 21-C section 4.1.2.5</a> "Specific PDs for Synchronous DRAM (SDRAM)"</span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.howtogeek.com/what-is-xmp/">"What Is XMP, and Why Does It Matter for RAM?"</a>. How-To Geek. 21 September 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">19 May</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.pcworld.com/article/394250/why-xmp-and-memory-overclocking-are-ok-even-if-they-void-your-warranty.html">"Why XMP and memory overclocking are OK even if they void your warranty"</a>. PCWorld. 16 March 2021<span class="reference-accessdate">. Retrieved <span class="nowrap">19 May</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.tomshardware.com/news/amd-ryzen-7000-burning-out-root-cause-identified-expo-and-soc-voltages-to-blame">"AMD Ryzen 7000 Burning Out: EXPO and SoC Voltages to Blame (AMD Responds)"</a>. Tom's Hardware. 25 April 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">19 May</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.intel.com/content/www/us/en/gaming/extreme-memory-profile-xmp.html">"Intel® Extreme Memory Profile (Intel® XMP)"</a>. Intel<span class="reference-accessdate">. Retrieved <span class="nowrap">19 May</span> 2025</span>. <q>Altering clock frequency or voltage may damage or reduce the useful life of the processor and other system components, and may reduce system stability and performance. Product warranties may not apply if the processor is operated beyond its specifications.</q></cite></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><cite class="citation cs2"><a rel="nofollow" class="external text" href="http://www.nvidia.com/content/epp/epp_specifications.pdf"><i>DDR2 UDIMM Enhanced Performance Profiles Design Specification</i></a> <span class="cs1-format">(PDF)</span>, <a href="Nvidia" title="Nvidia">Nvidia</a>, 12 May 2006<span class="reference-accessdate">, retrieved <span class="nowrap">5 May</span> 2009</span></cite></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20081207172621/http://www.nvidia.com/docs/CP/45121/sli_memory.pdf">"Technical Brief - SLI-Ready Memory with Enhanced Performance Profiles One-Click Hassle-Free Memory Performance Boost"</a> <span class="cs1-format">(PDF)</span>. Archived from <a rel="nofollow" class="external text" href="http://www.nvidia.com/docs/CP/45121/sli_memory.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 7 December 2008.</cite></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.nvidia.com/docs/IO/52280/NVIDIA_EPP2_TB.pdf">Enhanced Performance Profiles 2.0</a> (pp. 2–3)</span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.intel.co.uk/content/www/uk/en/gaming/extreme-memory-profile-xmp.html">"What Is Intel Extreme Memory Profile (Intel XMP)?"</a>. <i>Intel</i><span class="reference-accessdate">. Retrieved <span class="nowrap">26 September</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-29">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.amd.com/en/technologies/amp">"Memory Profile Technology - AMP up your RAM"</a>. <i>AMD</i>. 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">8 January</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><cite id="CITEREFMartin2012" class="citation web cs1">Martin, Ryan (23 July 2012). <a rel="nofollow" class="external text" href="https://www.eteknix.com/amd-introduces-its-xmp-equivalent-amp/">"AMD introduces its XMP-equivalent AMP - eTeknix"</a>. <i>eTeknix</i><span class="reference-accessdate">. Retrieved <span class="nowrap">8 January</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-31">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.msi.com/news/detail/0ec96be397dd6d3cf2fecb4a2d627c1c">"MSI is worlds first brand to enable A-XMP on Ryzen for best DDR4 performance, launches new models"</a>. <i>MSI</i>. 21 March 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">8 January</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-32">^</a></b></span> <span class="reference-text"><cite id="CITEREFTradesman12016" class="citation web cs1">Tradesman1 (26 August 2016). <a rel="nofollow" class="external text" href="http://www.tomshardware.com/answers/id-3167421/xmp-docp-eocp.html#r18503260">"What does XMP, DOCP, EOCP mean - Solved - Memory"</a>. <i>Tom's Hardware Forums</i><span class="reference-accessdate">. Retrieved <span class="nowrap">8 January</span> 2018</span>.</cite><span class="cs1-maint citation-comment"><code class="cs1-code">{{cite web}}</code>: CS1 maint: numeric names: authors list (link)</span></span>
</li>
<li id="cite_note-xmp1.1-33"><span class="mw-cite-backlink">^ <a href="#cite_ref-xmp1.1_33-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-xmp1.1_33-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-xmp1.1_33-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20120306230940/http://www.softnology.biz/pdf/IntelXMP_Rev1.1.pdf">"Intel Extreme Memory Profile (XMP) Specification, Rev 1.1"</a> <span class="cs1-format">(PDF)</span>. <i>Intel</i>. October 2007. Archived from <a rel="nofollow" class="external text" href="http://www.softnology.biz/pdf/Intel_XMP_Spec_Rev1.1.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 6 March 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">25 May</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.amd.com/en/technologies/expo">"AMD Extended Profiles for Overclocking"</a>. <i>AMD</i><span class="reference-accessdate">. Retrieved <span class="nowrap">26 September</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-JRoachDigitalTrends-35"><span class="mw-cite-backlink">^ <a href="#cite_ref-JRoachDigitalTrends_35-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-JRoachDigitalTrends_35-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-JRoachDigitalTrends_35-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFRoach2022" class="citation web cs1">Roach, Jacob (6 September 2022). <a rel="nofollow" class="external text" href="https://www.digitaltrends.com/computing/what-is-amd-expo/">"What is AMD EXPO and should my DDR5 have it?"</a>. <i>Digital Trends</i><span class="reference-accessdate">. Retrieved <span class="nowrap">26 September</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text"><cite id="CITEREFBonshor2022" class="citation web cs1">Bonshor, Gavin (30 August 2022). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20220830224541/https://www.anandtech.com/show/17556/amd-expo-memory-one-click-overclocking-profiles-for-ryzen-7000-feat-gskill-and-corsair">"AMD EXPO Memory Technology: One Click Overclocking Profiles For Ryzen 7000"</a>. <i>AnandTech</i>. Archived from <a rel="nofollow" class="external text" href="https://www.anandtech.com/show/17556/amd-expo-memory-one-click-overclocking-profiles-for-ryzen-7000-feat-gskill-and-corsair">the original</a> on 30 August 2022<span class="reference-accessdate">. Retrieved <span class="nowrap">26 September</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://videocardz.com/newz/amd-announces-expo-technology-for-ddr5-memory-overclocking">"AMD announces EXPO technology for DDR5 memory overclocking"</a>. <i>VideoCardz</i>. 30 August 2022<span class="reference-accessdate">. Retrieved <span class="nowrap">26 September</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://forums.tomshardware.com/threads/packard-bell-lj65-ram-upgrade.1651388/">"Packard Bell LJ65 RAM upgrade"</a>. <i>Tom's Hardware Forum</i>. 9 January 2014.</cite></span>
</li>
<li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.linux.com/news/dmidecode-whats-it-good">"dmidecode: What's it good for?"</a>. <i>Linux.com | The source for Linux information</i>. 29 November 2004.</cite></span>
</li>
<li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://manpages.debian.org/testing/i2c-tools/decode-dimms.1.en.html">"decode-dimms(1)"</a>. <i>Debian Manpage</i><span class="reference-accessdate">. Retrieved <span class="nowrap">16 December</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.freebsd.org/cgi/man.cgi?query=decode-dimms">"decode-dimms"</a>. <i>www.freebsd.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">24 January</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-42">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.hwinfo.com/">"HWiNFO - Professional System Information and Diagnostics"</a>. <i>HWiNFO</i>.</cite></span>
</li>
<li id="cite_note-43"><span class="mw-cite-backlink"><b><a href="#cite_ref-43">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.corsair.com/us/en/vengeance-rgb-pro-memory">"VENGEANCE RGB PRO series DDR4 memory | Desktop Memory | CORSAIR"</a>. <i>www.corsair.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">26 November</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-44"><span class="mw-cite-backlink"><b><a href="#cite_ref-44">^</a></b></span> <span class="reference-text"><cite id="CITEREFActiveCyber" class="citation techreport cs1">ActiveCyber. <a rel="nofollow" class="external text" href="https://www.activecyber.us/activelabs/viper-rgb-driver-local-privilege-escalation-cve-2019-18845"><i>Viper RGB Driver Local Privilege Escalation</i></a> (Technical report). <a href="CVE_(identifier)" class="mw-redirect" title="CVE (identifier)">CVE</a>-<a rel="nofollow" class="external text" href="https://nvd.nist.gov/vuln/detail/CVE-2019-18845">2019-18845</a> – via MITRE Corporation.</cite></span>
</li>
<li id="cite_note-45"><span class="mw-cite-backlink"><b><a href="#cite_ref-45">^</a></b></span> <span class="reference-text"><cite id="CITEREFActiveCyber" class="citation techreport cs1">ActiveCyber. <a rel="nofollow" class="external text" href="https://www.activecyber.us/activelabs/corsair-icue-driver-local-privilege-escalation-cve-2020-8808"><i>CORSAIR iCUE Driver Local Privilege Escalation (CVE-2020-8808)</i></a> (Technical report). <a href="CVE_(identifier)" class="mw-redirect" title="CVE (identifier)">CVE</a>-<a rel="nofollow" class="external text" href="https://nvd.nist.gov/vuln/detail/CVE-2020-8808">2020-8808</a> – via MITRE Corporation.</cite></span>
</li>
<li id="cite_note-46"><span class="mw-cite-backlink"><b><a href="#cite_ref-46">^</a></b></span> <span class="reference-text"><cite id="CITEREFActiveCyber" class="citation techreport cs1">ActiveCyber. <a rel="nofollow" class="external text" href="https://www.activecyber.us/activelabs/active-2020-003-trident-z-lighting-control-driver-local-privilege-escalation"><i>ACTIVE-2020-003: Trident Z Lighting Control Driver Local Privilege Escalation</i></a> (Technical report). <a href="CVE_(identifier)" class="mw-redirect" title="CVE (identifier)">CVE</a>-<a rel="nofollow" class="external text" href="https://nvd.nist.gov/vuln/detail/CVE-2020-12446">2020-12446</a> – via MITRE Corporation.</cite></span>
</li>
</ol></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-08-06" href="https://en.wikipedia.org/wiki/?title=Serial_presence_detect&oldid=1304464467">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>